Trabajando con imágenes en presentaciones — 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. Las imágenes también pueden usarse como rellenos de fondo de forma mediante FillType.PICTURE.
Agregar una imagen desde archivo
Cargue los bytes de la imagen desde el disco y añádalos a la colección de imágenes de la presentación con prs.images.add_image(). Luego coloque la imagen en una diapositiva como una 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)Los cuatro argumentos posicionales de add_picture_frame() son: x, y, width, height en puntos.
Añadiendo una Imagen desde Bytes
Si ya tiene los bytes de la imagen (p. ej., descargados de una URL o leídos de una base de datos), páselos directamente a 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)Posicionamiento y dimensionado de un PictureFrame
El PictureFrame devuelto por add_picture_frame() hereda todos los Shape propiedades de geometría y puede ser reubicado después de la creación:
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)Usar una imagen como relleno de forma
Cualquier forma (no solo PictureFrame) puede usar una imagen como relleno de fondo. Establezca fill_type = FillType.PICTURE y asigne la imagen 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 escala la imagen para llenar toda la forma. Use TILE para un patrón de mosaico repetido.
Añadiendo Múltiples Imágenes a lo Largo de Diapositivas
Imágenes añadidas a prs.images se comparten en todas las diapositivas. El mismo Image objeto puede usarse en múltiples diapositivas sin duplicar los datos:
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)