So fügen Sie Bilder zu PowerPoint‑Folien in Python hinzu

So fügen Sie Bilder zu PowerPoint‑Folien in Python hinzu

Bilder in Aspose.Slides FOSS werden als picture frames eingebettet, Formen, die ein Bild enthalten und wie jede andere Form positioniert, skaliert und formatiert werden können. Die Bilddaten werden einmal in der prs.images-Sammlung gespeichert und vom Rahmen referenziert.


Voraussetzungen

pip install aspose-slides-foss

Ein Bild aus einer Datei hinzufügen

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)

Die add_picture_frame Signatur:

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

Alle Abmessungen sind in Punkten (1 Punkt = 1/72 Zoll). Für eine Standardfolie von 13,33 × 7,5 Zoll beträgt der Koordinatenraum 960 × 540 Punkte.


Ein Bild aus Bytes hinzufügen

Wenn Sie das Bild bereits als Bytes haben (z. B. von einer URL heruntergeladen oder aus einer Datenbank gelesen):

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)

Steuerung des Füllmodus

Der picture_fill_format auf einem PictureFrame steuert, wie das Bild die Rahmenbegrenzungen füllt:

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)
PictureFillModeVerhalten
STRETCHBild skalieren, um den Rahmen zu füllen, Seitenverhältnis ignorieren
TILEBild als Kachelmuster wiederholen
TILE_FLIPKacheln mit abwechselnden horizontalen/vertikalen Spiegelungen

Mehrere Bilder zu verschiedenen Folien hinzufügen

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)

Bilder in einer vorhandenen Präsentation zählen

import aspose.slides_foss as slides

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

Die prs.images-Sammlung wird über alle Folien hinweg gemeinsam genutzt: dieselben Bildbytes werden einmal gespeichert, selbst wenn der Bildrahmen auf mehreren Folien erscheint.


Siehe auch

 Deutsch