Převod snímků PowerPoint na PNG v Pythonu

Přehled

Tento článek vysvětluje, jak převést snímky prezentace na obrázky PNG pomocí Aspose.Slides pro Python přes Java. Můžete načíst prezentace ve formátech jako PPT, PPTX a ODP, vykreslit každý snímek a uložit jej jako samostatný PNG obrázek.

Převod PowerPointu na PNG

Načtěte prezentaci pomocí třídy Presentation a přistupujte k jejím snímkům přes kolekci Presentation.getSlides. Příklad vykreslí každý snímek pomocí Slide.getImage bez parametrů pro vytvoření miniatury. Poté zavolá IImage.save s ImageFormat.Png pro uložení každého vykresleného snímku jako PNG obrázku.

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation

presentation = Presentation("presentation.pptx")
try:
    for index, slide in enumerate(presentation.getSlides()):
        image = slide.getImage()
        try:
            image.save(f"slide_{index}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

Převod PowerPointu na PNG s vlastním rozměrem

Předávejte horizontální a vertikální měřítkové faktory metodě Slide.getImage pro ovládání vykreslených rozměrů. V tomto příkladu jsou oba faktory rovny 2, takže snímek o rozměrech 720 × 540 bodů vytvoří obrázek o rozměrech 1440 × 1080 pixelů. Stejné měřítkové faktory zachovávají poměr stran snímku. Každý vykreslený obrázek je uložen ve formátu PNG.

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation

presentation = Presentation("presentation.pptx")
try:
    scale_x = 2.0
    scale_y = scale_x

    for index, slide in enumerate(presentation.getSlides()):
        image = slide.getImage(scale_x, scale_y)
        try:
            image.save(f"slide_{index}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

Převod PowerPointu na PNG s vlastní velikostí

Pro určení výstupních rozměrů v pixelech předávejte metodě Slide.getImage velikost místo měřítkových faktorů. Tento příklad vykreslí všechny snímky na 960 × 720 pixelů a uloží výsledek ve formátu PNG. Zvolte rozměry, které odpovídají poměru stran snímku, aby nedošlo k natažení obrázku.

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation
from java.awt import Dimension

presentation = Presentation("presentation.pptx")
try:
    image_size = Dimension(960, 720)

    for index, slide in enumerate(presentation.getSlides()):
        image = slide.getImage(image_size)
        try:
            image.save(f"slide_{index}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

Zvolte styl renderování gradientu

Předpokládejme, že snímek obsahuje gradientní výplně, ale přechody v exportovaném PNG vypadají světleji nebo jinak než v PowerPointu. Můžete použít metodu SaveOptions.setGradientStyle zděděnou třídou RenderingOptions pro výběr způsobu renderování gradientů.

Stáhněte gradient-styles.pptx a umístěte jej do pracovního adresáře aplikace. Jeho první snímek obsahuje dva lineární gradienty: azurově‑oranžový v horní části a modro‑žlutý ve spodní části. Každý gradient má dva zastavení, na 0 % a 100 %.

Následující příklad načte tuto prezentaci a vykreslí první snímek v obou režimech pomocí Slide.getImage.

import jpype
import asposeslides

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

from asposeslides.api import GradientStyle, ImageFormat, Presentation, RenderingOptions

presentation = Presentation("gradient-styles.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    gradient_styles = (GradientStyle.Default, GradientStyle.PowerPointUI)
    for style in gradient_styles:
        options = RenderingOptions()
        options.setGradientStyle(style)

        style_name = "Default" if style == GradientStyle.Default else "PowerPointUI"
        image = slide.getImage(options, 1.0, 1.0)
        try:
            image.save(f"gradient-{style_name}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

Obrázky níže ukazují výstup ze stejného snímku, s oběma gradienty v každém obrázku:

Default PowerPointUI
Gradienty cyan‑to‑orange a blue‑to‑yellow vykreslené pomocí Default Stejné gradienty vykreslené pomocí PowerPointUI

V tomto příkladu Default vytváří světlejší mezibarevné tóny, zatímco PowerPointUI vytváří tmavší mezibarevné tóny. Rozdíl závisí na barvách a zastaveních v gradientu.

Zvolte Default, pokud vám vyhovuje standartní výstup Aspose.Slides. Vyzkoušejte PowerPointUI, pokud je vaším hlavním cílem shoda vzhledu s PowerPointem. Porovnejte oba výstupy s očekávaným výsledkem; žádný režim není univerzálně lepší.

Často kladené otázky

Jak mohu exportovat konkrétní tvar, například graf nebo obrázek, místo celého snímku?

Aspose.Slides podporuje generování miniatur pro jednotlivé tvary, což vám umožní vykreslit tvar jako PNG obrázek.

Je paralelní převod podporován na serveru?

Ano. Používejte samostatnou instanci prezentace pro každé vlákno nebo proces; nesdílet jedinou instanci mezi vlákny.

Jaká jsou omezení evaluační verze při exportu do PNG?

Evaluační režim přidává vodoznak do výstupních obrázků a použije další omezení, dokud není licence aplikována.