Otimizar o gerenciamento de imagens no PowerPoint com Python

Introdução

Imagens tornam as apresentações mais envolventes e interessantes. No Microsoft PowerPoint, você pode inserir imagens de um arquivo, da internet ou de outras fontes nos slides. Da mesma forma, o Aspose.Slides permite que você adicione imagens aos slides de várias maneiras.

Aspose.Slides oferece suporte ao trabalho com imagens em formatos populares, como JPEG, PNG, BMP, GIF e outros.

Adicionar Imagens Armazenadas Localmente aos Slides

Você pode adicionar uma ou mais imagens do seu computador a um slide de uma apresentação. O exemplo em Python a seguir mostra como adicionar uma imagem a um slide:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    with open("image.jpeg", "rb") as image_stream:
        image = presentation.images.add_image(image_stream)
        slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, image)

    presentation.save("presentation_with_image.pptx", slides.export.SaveFormat.PPTX)

Adicionar Imagens da Web aos Slides

Se a imagem que você deseja adicionar a um slide não estiver disponível no seu computador, pode inseri‑la diretamente da web.

O exemplo em Python a seguir mostra como adicionar uma imagem a partir de uma URL a um slide:

import aspose.slides as slides
import urllib2
import base64

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    image_data = base64.b64encode(urllib2.urlopen("[REPLACE WITH URL]").read())

    image = presentation.images.add_image(image_data)
    slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, image)
    
    presentation.save("presentation.pptx", slides.export.SaveFormat.PPTX)

Adicionar Imagens aos Mestres de Slides

Um mestre de slides é o slide de nível superior que armazena e controla informações—tema, layout, etc.—para todos os slides abaixo dele. Quando você adiciona uma imagem a um mestre de slides, essa imagem aparece em todos os slides que utilizam esse mestre.

O exemplo em Python a seguir mostra como adicionar uma imagem a um mestre de slides:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    master_slide = slide.layout_slide.master_slide

    with open("image.jpeg", "rb") as image_stream:
        image = presentation.images.add_image(image_stream)
        master_slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, image)

    presentation.save("master_with_image.pptx", slides.export.SaveFormat.PPTX)

Definir uma Imagem como Plano de Fundo de um Slide

Você pode querer usar uma imagem como plano de fundo para um slide específico ou vários slides. Para detalhes, consulte Definir uma Imagem como Plano de Fundo de um Slide.

Adicionar SVG a Apresentações

Você pode inserir qualquer imagem em uma apresentação usando o método add_picture_frame da classe ShapeCollection.

Para criar um objeto de imagem a partir de um SVG, siga estas etapas:

  1. Crie um SvgImage e adicione‑lo à coleção de imagens da apresentação.
  2. Crie um objeto PPImage a partir do SvgImage.
  3. Crie um objeto PictureFrame usando o PPImage.

O exemplo em Python a seguir mostra como adicionar uma imagem SVG a uma apresentação usando essas etapas:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    # Ler o conteúdo de um arquivo SVG.
    with open("sample.svg", "rt") as image_stream:
        svg_content = image_stream.read()
        # Criar um objeto SvgImage.
        svg_image = slides.SvgImage(svg_content)

        # Criar um objeto PPImage.
        pp_image = presentation.images.add_image(svg_image)

        # Criar um novo PictureFrame.
        slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 200, 100, pp_image.width, pp_image.height, pp_image)

        # Salvar a apresentação no formato PPTX.
        presentation.save("presentation_with_SVG.pptx", slides.export.SaveFormat.PPTX)

Converter SVG em um Conjunto de Formas

Aspose.Slides converte SVGs em um conjunto de formas de maneira semelhante ao tratamento de SVGs do PowerPoint.

PowerPoint Popup Menu

Essa funcionalidade é fornecida por uma sobrecarga do método add_group_shape da classe ShapeCollection que aceita um SvgImage como primeiro argumento.

O código de exemplo abaixo mostra como converter um arquivo SVG em um conjunto de formas.

import aspose.slides as slides

with slides.Presentation() as presentation:
    # Ler o conteúdo do arquivo SVG.
    with open("sample.svg","rt") as image_stream:
        svg_content = image_stream.read()
        # Criar um objeto SvgImage.
        svg_image = slides.SvgImage(svg_content)

        # Obter o tamanho do slide.
        slide_size = presentation.slide_size.size

        # Converter a imagem SVG em um grupo de formas e dimensioná‑la ao tamanho do slide.
        presentation.slides[0].shapes.add_group_shape(svg_image, 0, 0, slide_size.width, slide_size.height)

        # Salvar a apresentação no formato PPTX.
        presentation.save("shapes_from_SVG.pptx", slides.export.SaveFormat.PPTX)

Adicionar Imagens como EMF nos Slides

Aspose.Slides for Python permite inserir imagens Enhanced Metafile (EMF) em apresentações.

O exemplo em Python a seguir demonstra isso:

with slides.Presentation() as presentation:
    slide = presentation.slides[0]
    with open("image.emf", "rb") as image_stream:
        emf_image = presentation.images.add_image(image_stream)
        slide_size = presentation.slide_size.size
        slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 0, 0, slide_size.width, slide_size.height, emf_image)
    
    presentation.save("presentation_with_EMF.pptx", slides.export.SaveFormat.PPTX)

Substituir Imagens na Coleção de Imagens

Aspose.Slides permite substituir imagens armazenadas na coleção de imagens de uma apresentação, inclusive aquelas usadas por formas de slide. Esta seção descreve várias abordagens para atualizar imagens na coleção. A API fornece métodos simples para substituir uma imagem por dados brutos de bytes, por uma instância de IImage ou por outra imagem que já exista na coleção.

Siga estas etapas:

  1. Carregue a apresentação que contém as imagens usando a classe Presentation.
  2. Carregue uma nova imagem de um arquivo em um array de bytes.
  3. Substitua a imagem alvo pela nova imagem usando o array de bytes.
  4. Alternativamente, carregue a imagem em um objeto IImage e substitua a imagem alvo por esse objeto.
  5. Ou substitua a imagem alvo por uma imagem que já exista na coleção de imagens da apresentação.
  6. Salve a apresentação modificada como um arquivo PPTX.
def read_all_bytes(file_name):
    with open(file_name, "rb") as stream:
        return stream.read()


# Instanciar a classe Presentation que representa um arquivo de apresentação.
with slides.Presentation("sample.pptx") as presentation:

    # A primeira forma.
    image_data = read_all_bytes("image0.jpeg")
    old_image = presentation.images[0]
    old_image.replace_image(image_data)

    # A segunda forma.
    new_image = slides.Images.from_file("image1.jpeg")
    old_image = presentation.images[1]
    old_image.replace_image(new_image)

    # A terceira forma.
    old_image = presentation.images[2]
    old_image.replace_image(presentation.images[3])

    # Salvar a apresentação em um arquivo.
    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

FAQ

A resolução da imagem original permanece intacta após a inserção?

Sim. Os pixels originais são preservados, mas a aparência final depende de como a picture é dimensionada no slide e de qualquer compressão aplicada ao salvar.

Qual é a melhor forma de substituir o mesmo logotipo em dezenas de slides de uma só vez?

Coloque o logotipo no slide mestre ou em um layout e substitua‑lo na coleção de imagens da apresentação—as atualizações se propagarão para todos os elementos que utilizam esse recurso.

Um SVG inserido pode ser convertido em formas editáveis?

Sim. Você pode converter um SVG em um grupo de formas, após o que as partes individuais se tornam editáveis com as propriedades padrão de forma.

Como definir uma imagem como plano de fundo para vários slides ao mesmo tempo?

Assign the image as the background no slide mestre ou no layout relevante—todos os slides que utilizarem esse mestre/layout herdarão o plano de fundo.

Como impedir que a apresentação “infle” de tamanho por causa de muitas imagens?

Reutilize um único recurso de imagem em vez de duplicados, escolha resoluções razoáveis, aplique compressão ao salvar e mantenha gráficos repetidos no mestre quando apropriado.