在演示文稿中处理图像 — Aspose.Slides FOSS for Python

Aspose.Slides FOSS for Python 允许您将图像嵌入演示文稿的共享图像集合,并使用 PictureFrame 形状在幻灯片上显示它们。图像还可以通过 FillType.PICTURE 用作形状的背景填充。


从文件添加图像

从磁盘加载图像字节并使用 prs.images.add_image() 将其添加到演示文稿的图像集合中。然后将图像作为 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)

add_picture_frame() 的四个位置参数是:x, y, width, height(以点为单位)。


从字节添加图像

如果您已经拥有图像字节(例如,从 URL 下载或从数据库读取),请直接将它们传递给 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)

对 PictureFrame 的定位和尺寸设置

PictureFrameadd_picture_frame() 返回,继承所有 Shape 几何属性,并且可以在创建后重新定位:

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)

使用图像作为形状填充

任何形状(不仅限于 PictureFrame)都可以使用图像作为其背景填充。设置 fill_type = FillType.PICTURE 并将图像分配给 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 将图像缩放以填满整个形状。使用 TILE 来实现重复平铺模式。


在幻灯片中添加多个图像

添加到 prs.images 的图像在所有幻灯片之间共享。同一个 Image 对象可以在多个幻灯片上使用,而无需复制数据:

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)

另请参见

 中文