Extraer imágenes de presentaciones de PowerPoint en Python

Las imágenes son una forma efectiva de comunicación que hace que el contenido sea vivo. Esta es la razón por la que las imágenes se adoptan ampliamente en páginas web, documentos, presentaciones, etc. Las presentaciones de MS PowerPoint generalmente se construyen con menos texto y más objetos gráficos e imágenes. Por lo tanto, al procesar las presentaciones mediante programación, es posible que deba extraer imágenes junto con el texto. Para lograr eso, este artículo cubre cómo extraer imágenes de presentaciones PPT o PPTX en Python.

Biblioteca de Python para extraer imágenes de presentaciones

Para extraer imágenes de presentaciones de PowerPoint, usaremos Aspose.Slides for Python via .NET. Es una poderosa biblioteca de Python que está diseñada para crear presentaciones desde cero. Además, le permite convertir y manipular las presentaciones existentes sin problemas. Puede instalarlo desde PyPI usando el siguiente comando pip.

> pip install aspose.slides

Extraer imágenes de un PPT de PowerPoint en Python

Los siguientes son los pasos para extraer imágenes de una presentación de PowerPoint en Python.

  • Cargue la presentación usando la clase Presentation.
  • Recorra las imágenes en la presentación usando la colección Presentation.images.
  • Guarde cada imagen como un archivo.

El siguiente ejemplo de código muestra cómo extraer imágenes de un archivo 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

Extraer imágenes de formas en un PPT

En ciertos casos, es posible que necesite extraer imágenes solo de las formas en una presentación. Entonces, veamos cómo extraer imágenes de formas en un PPT en Python.

  • Primero, cargue la presentación usando la clase Presentation.
  • Luego, recorra las diapositivas de la presentación usando la colección Presentation.slides.
  • Para cada diapositiva, acceda a sus formas usando la colección ISlide.shapes.
  • Para cada forma de la colección, realice los siguientes pasos:
    • Si la forma es una forma automática y su tipo de relleno es una imagen, extraiga la imagen usando la propiedad IShape.fill\format.picture\fill\format.picture.image.
    • Si la forma es un marco de imagen, extraiga la imagen usando la propiedad IShape.picture\format.picture.image.
    • Finalmente, guarde la imagen como un archivo.

El siguiente ejemplo de código muestra cómo extraer imágenes de formas en una presentación 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)

Extraer imágenes de fondos de diapositivas en un PPT

Otro escenario podría ser extraer las imágenes que se utilizan como fondos de diapositivas. Los siguientes son los pasos para extraer imágenes solo de fondos de diapositivas en una presentación PPT.

  • Primero, cargue la presentación usando la clase Presentation.
  • Luego, recorra las diapositivas de la presentación usando la colección Presentation.slides.
  • Para cada diapositiva, realice los siguientes pasos:
    • Verifique si la diapositiva tiene una imagen de fondo usando la propiedad ISlide.background.fill\format.fill\type.
    • Si el fondo tiene una imagen, extraiga la imagen usando la propiedad ISlide.background.fill\format.picture\fill\format.picture.image.
    • Verifique si la diapositiva de diseño tiene una imagen de fondo usando la propiedad ISlide.layout\slide.background.fill\format.fill\type.
    • Si el fondo está lleno de una imagen, extráigalo usando la propiedad ISlide.layout\slide.background.fill\format.picture\fill\format.picture.image.
    • Finalmente, guarde la imagen extraída como un archivo.

El siguiente ejemplo de código muestra cómo extraer imágenes de fondos de diapositivas en 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)

Los dos ejemplos de código anteriores usan un método get_image\format, que devuelve el formato de imagen adecuado para el tipo proporcionado. La implementación de ese método se proporciona a continuación.

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)

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para usar Aspose.Slides for Python a través de .NET sin limitaciones de evaluación.

Conclusión

En este artículo, ha aprendido a extraer imágenes de presentaciones de PowerPoint en Python. También hemos cubierto la extracción de imágenes de formas y fondos de diapositivas por separado. Además, puede explorar más sobre Aspose.Slides for Python visitando la documentación. Además, puede hacer sus preguntas a través de nuestro foro.

Ver también

Información: Aspose proporciona convertidores de PowerPoint a imágenes (PPT a JPG y [PPT a PNG][]) que le permiten generar imágenes basadas en diapositivas en una presentación.