Vytvoření miniatur tvarů prezentace v Pythonu přes Java

Úvod

Aspose.Slides for Python via Java lze použít k vytváření souborů prezentací, kde každá stránka odpovídá snímku. Snímky lze zobrazit otevřením souborů prezentace v Microsoft PowerPoint. Někdy však vývojáři potřebují zobrazit obrázky tvarů samostatně v prohlížeči obrázků. V takových případech Aspose.Slides for Python via Java pomáhá vygenerovat miniatury tvarů na snímku.

Tento článek popisuje, jak generovat miniatury tvarů různými způsoby:

  • Generování miniatury tvaru uvnitř snímku.
  • Generování miniatury tvaru pro tvar na snímku s uživatelem definovanými rozměry.
  • Generování miniatury tvaru v mezích vzhledu tvaru.

Generování miniatury tvaru ze snímku

Pro vygenerování miniatury tvaru z libovolného snímku pomocí Aspose.Slides for Python via Java postupujte následovně:

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek pomocí jeho ID nebo indexu.
  3. Získejte obrázek miniatury tvaru tvaru na odkazovaném snímku v výchozím měřítku.
  4. Uložte obrázek miniatury v požadovaném formátu obrázku.

Tento ukázkový kód ukazuje, jak vygenerovat miniaturu tvaru ze snímku:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation

# Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
presentation = Presentation("Thumbnail.pptx")
try:
    # Vytvořte obrázek v plném měřítku.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage()
    try:
        # Uložte obrázek na disk ve formátu PNG.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

Generování miniatury s uživatelem definovaným faktorem měřítka

Pro vygenerování miniatury tvaru snímku pomocí Aspose.Slides for Python via Java postupujte takto:

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek pomocí jeho ID nebo indexu.
  3. Získejte obrázek miniatury tvaru tvaru na odkazovaném snímku s uživatelem definovanými rozměry.
  4. Uložte obrázek miniatury v požadovaném formátu obrázku.

Tento ukázkový kód ukazuje, jak vygenerovat miniaturu tvaru na základě definovaného faktoru měřítka:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds

# Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
presentation = Presentation("Thumbnail.pptx")
try:
    # Vytvořte obrázek měřítkovaný faktorem 2 v obou směrech.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 2, 2)
    try:
        # Uložte obrázek na disk ve formátu PNG.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

Vytvoření miniatury tvaru na základě ohraničení vzhledu

Tato metoda vytváření miniatur tvarů umožňuje vývojářům vygenerovat miniaturu v mezích vzhledu tvaru. Bere v úvahu všechny efekty tvaru. Vygenerovaná miniatura tvaru je omezena mezemi snímku. Pro vygenerování miniatury tvaru na snímku v mezích jeho vzhledu postupujte následovně:

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek pomocí jeho ID nebo indexu.
  3. Získejte obrázek miniatury tvaru na odkazovaném snímku pomocí jeho ohraničení vzhledu.
  4. Uložte obrázek miniatury v požadovaném formátu obrázku.

Tento ukázkový kód vychází z výše uvedených kroků:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds

# Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
presentation = Presentation("Thumbnail.pptx")
try:
    # Vytvořte obrázek v plném měřítku.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1)
    try:
        # Uložte obrázek na disk ve formátu PNG.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

Získání skutečných vizuálních ohraničení tvaru

Vlastnosti rámce Shape — její metody getX, getY, getWidth a getHeight — popisují obdélník uložený v modelu prezentace. Obsah, který se skutečně vykresluje, může přesahovat tento rámec nebo zabírat jiný osově zarovnaný obdélník. Rotace, obrysy, šipky, rozvržení a přetečení textu, generovaná geometrie SmartArt a další efekty vykreslování mohou změnit obsazenou oblast.

Použijte Shape.getVisualBounds k výpočtu této obsazené oblasti bez vytváření obrázku. Metoda vrací objekt Rectangle2D.Float v souřadnicích snímku. Vrácený obdélník není oříznut na snímek, takže jeho souřadnice mohou být záporné, pokud obsah přesahuje počátek snímku.

Následující příklad získává a porovnává rámcová a vizuální ohraničení:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation
from java.awt.geom import Rectangle2D

presentation = Presentation("example.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)

    visual_bounds = shape.getVisualBounds()
    frame_bounds = Rectangle2D.Float(shape.getX(), shape.getY(), shape.getWidth(), shape.getHeight())

    print("Frame bounds:", frame_bounds)
    print("Visual bounds:", visual_bounds)
finally:
    presentation.dispose()

Stejný objekt Rectangle2D.Float lze použít k zarovnání blízkých tvarů k levému, pravému, hornímu nebo spodnímu okraji; rezervovat dostatek prostoru v generovaném rozvržení; nebo detekovat obsah mimo povolenou oblast. Vizuální ohraničení jsou zvláště užitečná pro SmartArt, textová pole, šipky, obrázky, otáčené tvary a seskupené tvary, kde uložený rámec nemusí představovat celý vykreslený výsledek.

Použijte Shape.getVisualBounds, když potřebujete souřadnice pro rozvržení nebo validaci a nepotřebujete bitmapu. Použijte Shape.getImage, když potřebujete tvar vykreslit. S ShapeThumbnailBounds a ShapeThumbnailBounds.Shape se velikost obrázku určuje podle ohraničení tvaru, včetně nastavení obrysu, zatímco ShapeThumbnailBounds.Appearance určuje velikost podle vzhledu tvaru a omezí výsledek na ohraničení snímku. Na rozdíl od toho Shape.getVisualBounds vrací pouze vypočtený obdélník a neorezuje jej na snímek.

Často kladené otázky

Jaké formáty obrázků lze použít při ukládání miniatur tvarů?

PNG, JPEG, BMP, GIF, TIFF, a další. Tvary lze také exportovat jako vektorové SVG uložením obsahu tvaru jako SVG.

Jaký je rozdíl mezi ohraničením Shape a Appearance při vykreslování miniatury?

Shape používá geometrii tvaru; Appearance bere v úvahu vizuální efekty (stíny, záře atd.).

Co se stane, když je tvar označen jako skrytý? Bude se stále vykreslovat jako miniatura?

Skrytý tvar zůstává součástí modelu a může být vykreslen; příznak skrytí ovlivňuje pouze zobrazení v prezentaci, ale nebrání generování obrázku tvaru.

Jsou podporovány seskupené tvary, grafy, SmartArt a další složité objekty?

Ano. Jakýkoli objekt reprezentovaný jako Shape (včetně GroupShape, Chart a SmartArt) může být uložen jako miniatura nebo jako SVG.

Ovlivňují systémově nainstalované fonty kvalitu miniatur textových tvarů?

Ano. Měli byste poskytnout požadované fonty (nebo konfigurovat náhrady fontů), aby nedocházelo k nechtěným náhradám a přetečení textu.