Converti diapositive della presentazione in immagini in Python
Introduzione
Aspose.Slides per Python via Java può rendere singole diapositive da presentazioni PowerPoint e OpenDocument come PNG, JPEG, GIF, TIFF e altri formati immagine.
Per convertire una diapositiva in un’immagine, segui questi passaggi:
- Carica la presentazione con la classe Presentation.
- Seleziona la diapositiva che desideri rendere.
- Se necessario, configura il rendering con la classe RenderingOptions o TiffOptions.
- Chiama il metodo Slide.getImage. Restituisce un oggetto immagine.
- Salva l’immagine e specifica il formato di output con un valore ImageFormat.
Convertire una diapositiva in un’immagine PNG
La conversione più semplice utilizza le impostazioni predefinite di rendering. L’oggetto immagine risultante può essere elaborato in memoria o salvato su file.
Il seguente esempio Python rende la prima diapositiva e la salva come immagine PNG:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
presentation = Presentation("Presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage()
try:
image.save("Slide_0.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
Convertire diapositive in immagini con dimensioni personalizzate
Usa la versione sovraccaricata di Slide.getImage che accetta un valore Dimension per rendere una diapositiva con dimensioni pixel esatte.
Il seguente esempio crea un’immagine JPEG 1820 × 1040:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
from java.awt import Dimension
image_size = Dimension(1820, 1040)
presentation = Presentation("Presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(image_size)
try:
image.save("Slide_0.jpg", ImageFormat.Jpeg)
finally:
image.dispose()
finally:
presentation.dispose()
Convertire diapositive con note e commenti in immagini
Per impostazione predefinita, le immagini delle diapositive non includono note o commenti. Passa un oggetto NotesCommentsLayoutingOptions al metodo RenderingOptions.setSlidesLayoutOptions per controllare dove appaiono note e commenti.
Il seguente esempio posiziona note troncate sotto la diapositiva e commenti a destra della stessa:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import CommentsPositions, ImageFormat, NotesCommentsLayoutingOptions, NotesPositions, Presentation, RenderingOptions
from java.awt import Color
scale_x = 2.0
scale_y = scale_x
comments_area_color = Color(250, 235, 215)
layout_options = NotesCommentsLayoutingOptions()
layout_options.setNotesPosition(NotesPositions.BottomTruncated)
layout_options.setCommentsPosition(CommentsPositions.Right)
layout_options.setCommentsAreaWidth(500)
layout_options.setCommentsAreaColor(comments_area_color)
rendering_options = RenderingOptions()
rendering_options.setSlidesLayoutOptions(layout_options)
presentation = Presentation("Presentation_with_notes_and_comments.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(rendering_options, scale_x, scale_y)
try:
image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif)
finally:
image.dispose()
finally:
presentation.dispose()
Warning
Per la conversione da diapositiva a immagine, non passare BottomFull al metodo NotesCommentsLayoutingOptions.setNotesPosition. Le note possono contenere più testo di quanto la dimensione fissa dell’immagine possa contenere. Usa invece BottomTruncated.Convertire diapositive in immagini usando le opzioni TIFF
La classe TiffOptions consente di controllare le dimensioni, la risoluzione e altre proprietà dell’immagine TIFF renderizzata.
Il seguente esempio rende la prima diapositiva come immagine TIFF 2160 × 2880 a 300 DPI:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation, TiffOptions
from java.awt import Dimension
image_size = Dimension(2160, 2880)
tiff_options = TiffOptions()
tiff_options.setImageSize(image_size)
tiff_options.setDpiX(300)
tiff_options.setDpiY(300)
presentation = Presentation("sample.pptx")
try:
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(tiff_options)
try:
image.save("output.tiff", ImageFormat.Tiff)
finally:
image.dispose()
finally:
presentation.dispose()
Warning
Il supporto TIFF non è garantito nelle versioni Java precedenti a JDK 9.Convertire tutte le diapositive in immagini
Itera attraverso la collezione di diapositive per convertire l’intera presentazione in una serie di immagini. Le diapositive nascoste sono incluse a meno che non le salti esplicitamente.
Il seguente esempio rende ogni diapositiva come immagine JPEG con fattori di scala orizzontale e verticale pari a 2:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation
scale_x = 2.0
scale_y = scale_x
presentation = Presentation("Presentation.pptx")
try:
slide_count = presentation.getSlides().size()
for index in range(slide_count):
slide = presentation.getSlides().get_Item(index)
image = slide.getImage(scale_x, scale_y)
try:
image.save(f"Slide_{index}.jpg", ImageFormat.Jpeg)
finally:
image.dispose()
finally:
presentation.dispose()
Creare output Enhanced Metafile
Enhanced Metafile (EMF) è utile quando è necessario scambiare grafiche vettoriali con Microsoft Office o altre applicazioni Windows che supportano i metafile Windows. A differenza di un’immagine basata su pixel, un EMF può conservare le operazioni di disegno vettoriale che si scalano senza la stessa perdita di nitidezza. Tuttavia, EMF è principalmente un formato di compatibilità per applicazioni con supporto ai metafile Windows, non un formato di interscambio universale. Inoltre, contenuti complessi delle diapositive, come immagini bitmap e alcuni effetti, possono essere memorizzati come elementi rasterizzati all’interno del contenitore vettoriale del metafile.
Esportare una diapositiva in EMF
Il metodo Slide.writeAsEmf scrive una Slide in un flusso di destinazione in formato EMF. Il seguente esempio carica una presentazione, seleziona la prima diapositiva e la scrive in un flusso di file EMF:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
from java.io import FileOutputStream
presentation = Presentation("Presentation.pptx")
try:
slide = presentation.getSlides().get_Item(0)
emf_stream = FileOutputStream("Slide_0.emf")
try:
slide.writeAsEmf(emf_stream)
finally:
emf_stream.close()
finally:
presentation.dispose()
Chi chiama possiede il flusso passato a Slide.writeAsEmf ed è responsabile della sua chiusura, come mostrato sopra.
Convertire un’immagine SVG in EMF e aggiungerla a una presentazione
Usa SvgImage.writeAsEmf per convertire il contenuto SVG in EMF. I byte risultanti possono essere aggiunti alla presentazione tramite ImageCollection.addImage e posizionati su una diapositiva con ShapeCollection.addPictureFrame.
Il seguente esempio crea un SvgImage dal markup SVG, lo converte in un EMF in memoria, inserisce il metafile nella prima diapositiva e salva la presentazione:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, ShapeType, SvgImage
from java.io import ByteArrayOutputStream
svg_content = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>"
svg_image = SvgImage(svg_content)
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
emf_stream = ByteArrayOutputStream()
try:
svg_image.writeAsEmf(emf_stream)
emf_data = emf_stream.toByteArray()
image = presentation.getImages().addImage(emf_data)
slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image)
finally:
emf_stream.close()
presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
SvgImage.writeAsEmf non assume la proprietà del flusso di destinazione. Un ByteArrayOutputStream memorizza tutti i dati generati in memoria, quindi non è necessario resettare la posizione prima di chiamare ByteArrayOutputStream.toByteArray. L’array di byte restituito rimane valido dopo la chiusura del flusso.
La generazione di EMF è disponibile sui sistemi operativi supportati dalla versione di Aspose.Slides per Python via Java e dalla configurazione JDK selezionata, ma il rendering può differire tra piattaforme quando i font o le dipendenze grafiche non sono disponibili. Installa i font utilizzati dal contenuto di origine o configura sostituzioni adeguate, segui i requisiti di piattaforma per Aspose.Slides per Python via Java e verifica il risultato nell’applicazione di destinazione che consuma EMF. Le applicazioni Linux e macOS spesso hanno un supporto limitato o incoerente per la visualizzazione e la modifica dei metafile Windows.
Rendering di Emoji a colori
Note
Per rendere correttamente le emoji a colori durante la conversione delle diapositive di una presentazione in immagini, i font delle emoji utilizzati nella presentazione devono essere installati e disponibili sul sistema che esegue la conversione. Ad esempio, se la presentazione utilizza Segoe UI Emoji e questo font è assente, le emoji potrebbero comparire in bianco e nero nelle immagini di output.FAQ
Aspose.Slides supporta il rendering di diapositive con animazioni?
No. Il metodo Slide.getImage genera un’immagine statica della diapositiva e non esporta le animazioni.
Le diapositive nascoste possono essere esportate come immagini?
Sì. Le diapositive nascoste possono essere renderizzate come diapositive normali. Includile nel ciclo di elaborazione, come mostrato nell’esempio precedente.
Ombre e altri effetti sono preservati nelle immagini delle diapositive?
Sì. Aspose.Slides renderizza ombre, trasparenza e altri effetti grafici supportati nelle immagini delle diapositive.