Hur man lägger till bilder i PowerPoint-bilder med Python

Hur man lägger till bilder i PowerPoint-bilder med Python

Bilder i Aspose.Slides FOSS är inbäddade som bildramar, former som innehåller en bild och kan placeras, skalas om och stylas som vilken annan form som helst. Bilddata lagras en gång i prs.images-samlingen och refereras av ramen.


Förutsättningar

pip install aspose-slides-foss

Lägg till en bild från en fil

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)

add_picture_frame-signaturen:

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

Alla dimensioner är i points (1 point = 1/72 tum). För en standard 13,33 × 7,5 tum‑bild är koordinatrymden 960 × 540 points.


Lägg till en bild från bytes

Om du redan har bilden som bytes (t.ex. nedladdad från en URL eller läst från en databas):

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)

Styr fyllningsläget

picture_fill_format på en PictureFrame kontrollerar hur bilden fyller ramens gränser:

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)
PictureFillModeBeteende
STRETCHSkala bilden så att den fyller ramen, utan att bevara bildförhållandet
TILEUpprepa bilden som ett kaklat mönster

Lägg till flera bilder på olika bilder

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, 720, 540, img
        )

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

Räkna bilder i en befintlig presentation

import aspose.slides_foss as slides

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

prs.images-samlingen delas över alla bilder: samma bildbytes lagras en gång även om bildramen visas på flera bilder.


Se även

 Svenska