Estrai immagini da presentazioni PowerPoint in Python

Le immagini sono un mezzo di comunicazione efficace che rende vivo il contenuto. Questo è il motivo per cui le immagini sono ampiamente adottate in pagine Web, documenti, presentazioni, ecc. Le presentazioni MS PowerPoint sono generalmente costruite con meno testo e più oggetti e immagini grafici. Pertanto, quando si elaborano le presentazioni a livello di codice, potrebbe essere necessario estrarre le immagini insieme al testo. A tal fine, questo articolo spiega come estrarre immagini da presentazioni PPT o PPTX in Python.

Libreria Python per estrarre immagini dalle presentazioni

Per estrarre immagini dalle presentazioni PowerPoint, utilizzeremo Aspose.Slides for Python via .NET. È una potente libreria Python progettata per creare presentazioni da zero. Inoltre, ti consente di convertire e manipolare le presentazioni esistenti senza problemi. Puoi installarlo da PyPI usando il seguente comando pip.

> pip install aspose.slides

Estrai immagini da un PPT di PowerPoint in Python

Di seguito sono riportati i passaggi per estrarre immagini da una presentazione PowerPoint in Python.

  • Carica la presentazione utilizzando la classe Presentation.
  • Scorri le immagini nella presentazione utilizzando la raccolta Presentation.images.
  • Salva ogni immagine come file.

L’esempio di codice seguente mostra come estrarre immagini da un file PPTX in Python.

import aspose.slides as slides
import aspose.pydrawing as drawing

imageIndex=1
# load presentation
with slides.Presentation("presentation.pptx") as pres:

    # loop through images
    for image in pres.images:
        file_name = "Image_{0}.{1}"
        image_type = image.content_type.split("/")[1]
        image_format = get_image_format(image_type)

        # save image
        image.system_image.save(file_name.format( imageIndex, image_type), image_format)
        imageIndex = imageIndex + 1

Estrai immagini dalle forme in un PPT

In alcuni casi, potrebbe essere necessario estrarre le immagini solo dalle forme in una presentazione. Vediamo quindi come estrarre immagini dalle forme in un PPT in Python.

  • Innanzitutto, carica la presentazione utilizzando la classe Presentation.
  • Quindi, scorrere le diapositive della presentazione utilizzando la raccolta Presentation.slides.
  • Per ogni diapositiva, accedi alle sue forme utilizzando la raccolta ISlide.shapes.
  • Per ogni forma nella raccolta, eseguire i seguenti passaggi:
    • Se la forma è una forma automatica e il tipo di riempimento è un’immagine, estrai l’immagine utilizzando la proprietà IShape.fillformat.picturefillformat.picture.image.
    • Se la forma è una cornice immagine, estrarre l’immagine utilizzando la proprietà IShape.pictureformat.picture.image.
    • Infine, salva l’immagine come file.

L’esempio di codice seguente mostra come estrarre immagini dalle forme in una presentazione PPT usando Python.

import aspose.slides as slides
import aspose.pydrawing as drawing

# load presentation
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # loop through slides
    for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # loop through shapes in slide
        for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # check is shape is an auto shape or picture frame
            if type(shape) is slides.AutoShape and shape.fill_format.fill_type == slides.FillType.PICTURE:
                shape_image = shape.fill_format.picture_fill_format.picture.image
            elif type(shape) is slides.PictureFrame:
                shape_image = shape.picture_format.picture.image

            # save image
            if shape_image is not None:
                image_type = shape_image.content_type.split("/")[1]
                image_format = get_image_format(image_type)

                shape_image.system_image.save(
                                file_name.format("shape_"+str(i)+"_", slideIndex, image_type), 
                                image_format)

Estrai le immagini dagli sfondi delle diapositive in un PPT

Un altro scenario potrebbe essere l’estrazione delle immagini utilizzate come sfondi delle diapositive. Di seguito sono riportati i passaggi per estrarre le immagini solo dagli sfondi delle diapositive in una presentazione PPT.

  • Innanzitutto, carica la presentazione utilizzando la classe Presentation.
  • Quindi, scorrere le diapositive della presentazione utilizzando la raccolta Presentation.slides.
  • Per ogni diapositiva, attenersi alla seguente procedura:
    • Verifica se la diapositiva ha un’immagine di sfondo utilizzando la proprietà ISlide.background.fillformat.filltype.
    • Se lo sfondo ha un’immagine, estrai l’immagine utilizzando la proprietà ISlide.background.fillformat.picturefillformat.picture.image.
    • Verifica se la diapositiva del layout ha un’immagine di sfondo utilizzando la proprietà ISlide.layoutslide.background.fillformat.filltype.
    • Se lo sfondo è riempito con un’immagine, estrarla utilizzando la proprietà ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Infine, salva l’immagine estratta come file.

L’esempio di codice seguente mostra come estrarre immagini dagli sfondi delle diapositive in un PPT in Python.

import aspose.slides as slides
import aspose.pydrawing as drawing

# load presentation
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # loop through the slides in presentation
    for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        back_image = None
        file_name = "BackImage_Slide_{0}{1}.{2}"
        is_layout = False

        # check if the slide's and layout slide's backgrounds are filled with picture
        if slide.background.fill_format.fill_type == slides.FillType.PICTURE:
            back_image = slide.background.fill_format.picture_fill_format.picture.image
        elif slide.layout_slide.background.fill_format.fill_type == slides.FillType.PICTURE:
            back_image = slide.layout_slide.background.fill_format.picture_fill_format.picture.image
            is_layout = True

        # save image
        if back_image is not None:
            image_type = back_image.content_type.split("/")[1]
            image_format = get_image_format(image_type)

            back_image.system_image.save(
                file_name.format("LayoutSlide_" if is_layout else "", slideIndex, image_type), 
                image_format)

Entrambi gli esempi di codice precedenti utilizzano un metodo getimageformat, che restituisce il formato immagine appropriato per il tipo fornito. L’attuazione di tale metodo è fornita di seguito.

import aspose.slides as slides
import aspose.pydrawing as drawing

def get_image_format(image_type):
    return {
        "jpeg": drawing.imaging.ImageFormat.jpeg,
        "emf": drawing.imaging.ImageFormat.emf,
        "bmp": drawing.imaging.ImageFormat.bmp,
        "png": drawing.imaging.ImageFormat.png,
        "wmf": drawing.imaging.ImageFormat.wmf,
        "gif": drawing.imaging.ImageFormat.gif,
    }.get(image_type, drawing.imaging.ImageFormat.jpeg)

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.Slides per Python tramite .NET senza limitazioni di valutazione.

Conclusione

In questo articolo hai imparato come estrarre immagini da presentazioni PowerPoint in Python. Abbiamo anche trattato l’estrazione di immagini da forme e sfondi di diapositive separatamente. Inoltre, puoi esplorare di più su Aspose.Slides per Python visitando la documentazione. Inoltre, puoi porre le tue domande tramite il nostro forum.

Guarda anche

Informazioni: Aspose fornisce convertitori da PowerPoint a immagini — PPT in JPG e [PPT in PNG][] — che consentono di generare immagini basate su diapositive in una presentazione.