Cách Thêm Hình Ảnh vào Các Slide PowerPoint trong Python

Cách Thêm Hình Ảnh vào Các Slide PowerPoint trong Python

Hình ảnh trong Aspose.Slides FOSS được nhúng dưới dạng khung hình, các hình dạng chứa hình ảnh và có thể được định vị, thay đổi kích thước và tạo kiểu như bất kỳ hình dạng nào khác. Dữ liệu hình ảnh được lưu trữ một lần trong bộ sưu tập prs.images và được tham chiếu bởi khung.


Điều kiện tiên quyết

pip install aspose-slides-foss

Thêm hình ảnh từ tệp

from aspose.slides_foss import ShapeType, PictureFillMode
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

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

    # Load image into the presentation's image collection
    with open("photo.jpg", "rb") as f:
        img = prs.images.add_image(f.read())

    # Add a picture frame at (x=50, y=50, width=400, height=300) in points
    frame = slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,
        50, 50, 400, 300,
        img,
    )

    prs.save("with-image.pptx", SaveFormat.PPTX)

Chữ ký add_picture_frame:

add_picture_frame(shape_type, x, y, width, height, image) → PictureFrame

Tất cả các kích thước đều tính bằng points (1 point = 1/72 inch). Đối với một slide tiêu chuẩn kích thước 13.33 × 7.5 inch, không gian tọa độ là 960 × 540 points.


Thêm một hình ảnh từ byte

Nếu bạn đã có hình ảnh dưới dạng byte (ví dụ: tải xuống từ URL hoặc đọc từ cơ sở dữ liệu):

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

image_bytes = open("logo.png", "rb").read()  # or any bytes source

with slides.Presentation() as prs:
    img = prs.images.add_image(image_bytes)

    prs.slides[0].shapes.add_picture_frame(
        ShapeType.RECTANGLE,
        200, 100, 300, 200,
        img,
    )
    prs.save("logo-slide.pptx", SaveFormat.PPTX)

Kiểm soát chế độ lấp đầy

picture_fill_format trên một PictureFrame kiểm soát cách hình ảnh lấp đầy giới hạn khung:

from aspose.slides_foss import ShapeType, PictureFillMode
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    img = prs.images.add_image(open("texture.png", "rb").read())
    frame = prs.slides[0].shapes.add_picture_frame(
        ShapeType.RECTANGLE, 50, 50, 600, 350, img
    )

    # STRETCH: scale image to fill the frame exactly (default)
    frame.picture_format.picture_fill_mode = PictureFillMode.STRETCH

    # TILE: repeat the image in a grid pattern
    # frame.picture_format.picture_fill_mode = PictureFillMode.TILE

    prs.save("filled.pptx", SaveFormat.PPTX)
PictureFillModeHành vi
STRETCHPhóng to hình ảnh để lấp đầy khung, bỏ qua tỷ lệ khung hình
TILELặp lại hình ảnh dưới dạng mẫu ghép ô
TILE_FLIPGhép ô với việc lật ngang/dọc xen kẽ

Thêm Nhiều Hình Ảnh vào Các Slide Khác Nhau

import os
from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

image_files = ["slide1.jpg", "slide2.jpg", "slide3.jpg"]

with slides.Presentation() as prs:
    layout = prs.slides[0].layout_slide

    # Ensure enough slides exist
    while len(prs.slides) < len(image_files):
        prs.slides.add_empty_slide(layout)

    for i, path in enumerate(image_files):
        if not os.path.exists(path):
            continue
        img = prs.images.add_image(open(path, "rb").read())
        prs.slides[i].shapes.add_picture_frame(
            ShapeType.RECTANGLE, 0, 0, 960, 540, img
        )

    prs.save("multi-image.pptx", SaveFormat.PPTX)

Đếm hình ảnh trong một bản trình bày hiện có

import aspose.slides_foss as slides

with slides.Presentation("with-image.pptx") as prs:
    print(f"Presentation contains {len(prs.images)} image(s)")

Bộ sưu tập prs.images được chia sẻ trên tất cả các slide: các byte hình ảnh giống nhau chỉ được lưu một lần ngay cả khi khung ảnh xuất hiện trên nhiều slide.


Xem thêm

 Tiếng Việt