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ě:
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek pomocí jeho ID nebo indexu.
- Získejte obrázek miniatury tvaru tvaru na odkazovaném snímku v výchozím měřítku.
- 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:
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek pomocí jeho ID nebo indexu.
- Získejte obrázek miniatury tvaru tvaru na odkazovaném snímku s uživatelem definovanými rozměry.
- 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ě:
- Vytvořte instanci třídy Presentation.
- Získejte odkaz na snímek pomocí jeho ID nebo indexu.
- Získejte obrázek miniatury tvaru na odkazovaném snímku pomocí jeho ohraničení vzhledu.
- 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.