Extraia imagens de apresentações do PowerPoint em Python

As imagens são uma forma eficaz de comunicação que torna o conteúdo animado. Esta é a razão pela qual as imagens são amplamente adotadas em páginas da web, documentos, apresentações, etc. As apresentações do MS PowerPoint geralmente são construídas com menos texto e mais objetos gráficos e imagens. Portanto, ao processar as apresentações programaticamente, talvez seja necessário extrair imagens junto com o texto. Para fazer isso, este artigo aborda como extrair imagens de apresentações PPT ou PPTX em Python.

Biblioteca Python para extrair imagens de apresentações

Para extrair imagens de apresentações do PowerPoint, usaremos Aspose.Slides for Python via .NET. É uma poderosa biblioteca Python projetada para criar apresentações do zero. Além disso, permite converter e manipular as apresentações existentes sem problemas. Você pode instalá-lo de PyPI usando o seguinte comando pip.

> pip install aspose.slides

Extrair imagens de um PowerPoint PPT em Python

A seguir estão as etapas para extrair imagens de uma apresentação do PowerPoint em Python.

  • Carregue a apresentação usando a classe Apresentação.
  • Percorra as imagens na apresentação usando a coleção Presentation.images.
  • Salve cada imagem como um arquivo.

O exemplo de código a seguir mostra como extrair imagens de um arquivo PPTX em Python.

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

imageIndex=1
# apresentação de carga
with slides.Presentation("presentation.pptx") as pres:

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

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

Extrair imagens de formas em um PPT

Em alguns casos, pode ser necessário extrair imagens apenas das formas em uma apresentação. Então vamos ver como extrair imagens de formas em um PPT em Python.

  • Primeiro, carregue a apresentação usando a classe Presentation.
  • Em seguida, percorra os slides da apresentação usando a coleção Presentation.slides.
  • Para cada slide, acesse suas formas usando a coleção ISlide.shapes.
  • Para cada forma na coleção, execute as seguintes etapas:
    • Se a forma for uma forma automática e seu tipo de preenchimento for imagem, extraia a imagem usando a propriedade IShape.fillformat.picturefillformat.picture.image.
    • Se a forma for uma moldura de imagem, extraia a imagem usando a propriedade IShape.pictureformat.picture.image.
    • Por fim, salve a imagem como um arquivo.

O exemplo de código a seguir mostra como extrair imagens de formas em uma apresentação PPT usando Python.

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

# apresentação de carga
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # percorrer os slides
    for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # percorrer as formas no slide
        for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # check is shape é uma forma automática ou moldura de imagem
            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

            # salvar imagem
            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)

Extraia imagens de fundos de slides em um PPT

Outro cenário pode ser extrair as imagens que são usadas como plano de fundo dos slides. A seguir estão as etapas para extrair imagens apenas de fundos de slides em uma apresentação PPT.

  • Primeiro, carregue a apresentação usando a classe Presentation.
  • Em seguida, percorra os slides da apresentação usando a coleção Presentation.slides.
  • Para cada slide, execute as seguintes etapas:
    • Verifique se o slide tem uma imagem de fundo usando a propriedade ISlide.background.fillformat.filltype.
    • Se o fundo tiver imagem, extraia a imagem usando a propriedade ISlide.background.fillformat.picturefillformat.picture.image.
    • Verifique se o slide de layout tem imagem de fundo usando a propriedade ISlide.layoutslide.background.fillformat.filltype.
    • Se o plano de fundo estiver preenchido com uma imagem, extraia-o usando a propriedade ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Por fim, salve a imagem extraída como um arquivo.

O exemplo de código a seguir mostra como extrair imagens de planos de fundo de slide em um PPT em Python.

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

# apresentação de carga
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # percorrer os slides na apresentação
    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

        # verifique se os fundos do slide e do slide de layout estão preenchidos com imagem
        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

        # salvar imagem
        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)

Ambos os exemplos de código acima usam um método getimageformat, que retorna o formato de imagem apropriado para o tipo fornecido. A implementação desse método é fornecida abaixo.

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)

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para usar o Aspose.Slides for Python via .NET sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como extrair imagens de apresentações do PowerPoint em Python. Também abordamos a extração de imagens de formas e fundos de slides separadamente. Além disso, você pode explorar mais sobre o Aspose.Slides for Python visitando a documentação. Além disso, você pode fazer suas perguntas através do nosso fórum.

Veja também

Informações: O Aspose fornece conversores de PowerPoint para imagens — PPT para JPG e [PPT para PNG][] — que permitem gerar imagens com base em slides em uma apresentação.