Extraire des images de présentations PowerPoint en Python

Les images sont un moyen de communication efficace qui rend le contenu vivant. C’est la raison pour laquelle les images sont largement adoptées dans les pages Web, les documents, les présentations, etc. Les présentations MS PowerPoint sont généralement construites avec moins de texte et plus d’objets graphiques et d’images. Par conséquent, lors du traitement des présentations par programmation, vous devrez peut-être extraire des images avec le texte. Pour ce faire, cet article explique comment extraire des images de présentations PPT ou PPTX en Python.

Bibliothèque Python pour extraire des images de présentations

Pour extraire des images de présentations PowerPoint, nous utiliserons Aspose.Slides for Python via .NET. Il s’agit d’une puissante bibliothèque Python conçue pour créer des présentations à partir de zéro. De plus, il vous permet de convertir et de manipuler les présentations existantes de manière transparente. Vous pouvez l’installer à partir de PyPI en utilisant la commande pip suivante.

> pip install aspose.slides

Extraire des images d’un PPT PowerPoint en Python

Voici les étapes pour extraire des images d’une présentation PowerPoint en Python.

  • Chargez la présentation à l’aide de la classe Presentation.
  • Parcourez les images dans la présentation à l’aide de la collection Presentation.images.
  • Enregistrez chaque image dans un fichier.

L’exemple de code suivant montre comment extraire des images d’un fichier PPTX en 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

Extraire des images de formes dans un PPT

Dans certains cas, vous devrez peut-être extraire des images uniquement à partir des formes d’une présentation. Voyons donc comment extraire des images de formes dans un PPT en Python.

  • Tout d’abord, chargez la présentation à l’aide de la classe Presentation.
  • Ensuite, parcourez les diapositives de la présentation à l’aide de la collection Presentation.slides.
  • Pour chaque diapositive, accédez à ses formes à l’aide de la collection ISlide.shapes.
  • Pour chaque forme de la collection, procédez comme suit :
    • Si la forme est une forme automatique et que son type de remplissage est une image, extrayez l’image à l’aide de la propriété IShape.fillformat.picturefillformat.picture.image.
    • Si la forme est un cadre d’image, extrayez l’image à l’aide de la propriété IShape.pictureformat.picture.image.
    • Enfin, enregistrez l’image en tant que fichier.

L’exemple de code suivant montre comment extraire des images de formes dans une présentation PPT à l’aide de 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)

Extraire des images d’arrière-plans de diapositives dans un PPT

Un autre scénario pourrait consister à extraire les images utilisées comme arrière-plan de diapositive. Voici les étapes pour extraire des images uniquement à partir d’arrière-plans de diapositives dans une présentation PPT.

  • Tout d’abord, chargez la présentation à l’aide de la classe Presentation.
  • Ensuite, parcourez les diapositives de la présentation à l’aide de la collection Presentation.slides.
  • Pour chaque diapositive, effectuez les étapes suivantes :
    • Vérifiez si la diapositive a une image d’arrière-plan à l’aide de la propriété ISlide.background.fillformat.filltype.
    • Si l’arrière-plan a une image, extrayez l’image à l’aide de la propriété ISlide.background.fillformat.picturefillformat.picture.image.
    • Vérifiez si la diapositive de mise en page a une image d’arrière-plan à l’aide de la propriété ISlide.layoutslide.background.fillformat.filltype.
    • Si l’arrière-plan est rempli d’une image, extrayez-la à l’aide de la propriété ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Enfin, enregistrez l’image extraite en tant que fichier.

L’exemple de code suivant montre comment extraire des images d’arrière-plans de diapositives dans un PPT en 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)

Les deux exemples de code ci-dessus utilisent une méthode getimageformat, qui renvoie le format d’image approprié pour le type fourni. La mise en œuvre de cette méthode est présentée ci-dessous.

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)

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour utiliser Aspose.Slides for Python via .NET sans limitations d’évaluation.

Conclusion

Dans cet article, vous avez appris à extraire des images de présentations PowerPoint en Python. Nous avons également couvert l’extraction d’images à partir de formes et d’arrière-plans de diapositives séparément. En outre, vous pouvez en savoir plus sur Aspose.Slides for Python en visitant la documentation. Vous pouvez également poser vos questions via notre forum.

Voir également

Info : Aspose fournit des convertisseurs PowerPoint en images — PPT en JPG et [PPT en PNG][] — qui vous permettent de générer des images basées sur des diapositives dans une présentation.