Hoe afbeeldingen aan PowerPoint-dia's toe te voegen in Python

Hoe afbeeldingen aan PowerPoint-dia's toe te voegen in Python

Afbeeldingen in Aspose.Slides FOSS worden ingebed als picture frames, vormen die een afbeelding bevatten en zoals elke andere vorm kunnen worden gepositioneerd, van grootte veranderd en gestyled. De afbeeldingsgegevens worden één keer opgeslagen in de prs.images collectie en gerefereerd door het frame.


Voorvereisten

pip install aspose-slides-foss

Afbeelding toevoegen vanuit een bestand

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)

De add_picture_frame handtekening:

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

Alle afmetingen zijn in points (1 point = 1/72 inch). Voor een standaard 13.33 × 7.5 inch dia is de coördinatenruimte 960 × 540 points.


Afbeelding toevoegen vanuit bytes

Als je de afbeelding al als bytes hebt (bijv. gedownload van een URL of gelezen uit een database):

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)

Regel de vulmodus

De picture_fill_format op een PictureFrame bepaalt hoe de afbeelding de framegrenzen vult:

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)
PictureFillModeGedrag
STRETCHSchaal de afbeelding om het kader te vullen, negeer de beeldverhouding
TILEHerhaal de afbeelding als een tegelpatroon
TILE_FLIPTegel met afwisselend horizontale/verticale spiegels

Meerdere afbeeldingen toevoegen aan verschillende dia’s

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)

Afbeeldingen tellen in een bestaande presentatie

import aspose.slides_foss as slides

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

De prs.images-collectie wordt gedeeld over alle dia’s: dezelfde afbeeldingsbytes worden één keer opgeslagen, zelfs als het afbeeldingskader op meerdere dia’s verschijnt.


Zie ook

 Nederlands