Trabalhando com Imagens em Apresentações — Aspose.Slides FOSS para Python
Aspose.Slides FOSS for Python lets you embed images in a presentation’s shared image collection and display them on slides using PictureFrame formas. Imagens também podem ser usadas como preenchimentos de fundo de forma via FillType.PICTURE.
Adding an Image from File
Carregue os bytes da imagem do disco e adicione-os à coleção de imagens da apresentação com prs.images.add_image(). Em seguida, coloque a imagem em um slide como um PictureFrame:
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
# Add the image to the shared collection
with open("logo.png", "rb") as f:
img = prs.images.add_image(f.read())
# Place it on the slide as a PictureFrame
slide = prs.slides[0]
slide.shapes.add_picture_frame(ShapeType.RECTANGLE, 50, 50, 300, 200, img)
prs.save("with-image.pptx", SaveFormat.PPTX)Os quatro argumentos posicionais para add_picture_frame() são: x, y, width, height em pontos.
Adicionando uma Imagem a partir de Bytes
Se você já tem os bytes da imagem (por exemplo, baixados de uma URL ou lidos de um banco de dados), passe-os diretamente para add_image():
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
# Simulate having bytes in memory
with open("photo.jpg", "rb") as f:
image_bytes = f.read()
with slides.Presentation() as prs:
img = prs.images.add_image(image_bytes)
prs.slides[0].shapes.add_picture_frame(ShapeType.RECTANGLE, 100, 80, 400, 250, img)
prs.save("from-bytes.pptx", SaveFormat.PPTX)Positioning and Sizing a PictureFrame
O PictureFrame retornado por add_picture_frame() herda todos os Shape propriedades de geometria e pode ser reposicionado após a criação:
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
with open("photo.jpg", "rb") as f:
img = prs.images.add_image(f.read())
pf = prs.slides[0].shapes.add_picture_frame(ShapeType.RECTANGLE, 0, 0, 100, 100, img)
# Reposition and resize after creation
pf.x = 50
pf.y = 100
pf.width = 350
pf.height = 250
prs.save("positioned.pptx", SaveFormat.PPTX)Usando uma Imagem como Preenchimento de Forma
Qualquer forma (não apenas PictureFrame) pode usar uma imagem como preenchimento de fundo. Defina fill_type = FillType.PICTURE e atribua a imagem a picture_fill_format.picture.image:
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, FillType, PictureFillMode
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
with open("background.png", "rb") as f:
img = prs.images.add_image(f.read())
slide = prs.slides[0]
shape = slide.shapes.add_auto_shape(ShapeType.ROUND_CORNER_RECTANGLE, 50, 50, 400, 250)
shape.fill_format.fill_type = FillType.PICTURE
shape.fill_format.picture_fill_format.picture_fill_mode = PictureFillMode.STRETCH
shape.fill_format.picture_fill_format.picture.image = img
prs.save("picture-fill.pptx", SaveFormat.PPTX)PictureFillMode.STRETCH redimensiona a imagem para preencher toda a forma. Use TILE para um padrão de ladrilho repetido.
Adicionando Múltiplas Imagens em Vários Slides
Imagens adicionadas a prs.images são compartilhadas em todos os slides. O mesmo Image objeto pode ser usado em vários slides sem duplicar os dados:
import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
with open("logo.png", "rb") as f:
logo = prs.images.add_image(f.read())
# Add the same image to both slides
prs.slides[0].shapes.add_picture_frame(ShapeType.RECTANGLE, 600, 10, 100, 40, logo)
prs.save("shared-image.pptx", SaveFormat.PPTX)