Πώς να προσθέσετε εικόνες σε διαφάνειες PowerPoint με Python

Πώς να προσθέσετε εικόνες σε διαφάνειες PowerPoint με Python

Οι εικόνες στο Aspose.Slides FOSS ενσωματώνονται ως picture frames, σχήματα που περιέχουν μια εικόνα και μπορούν να τοποθετηθούν, να αλλάξουν μέγεθος και να μορφοποιηθούν όπως οποιοδήποτε άλλο σχήμα. Τα δεδομένα της εικόνας αποθηκεύονται μία φορά στη συλλογή prs.images και αναφέρονται από το πλαίσιο.


Προαπαιτούμενα

pip install aspose-slides-foss

Προσθήκη εικόνας από αρχείο

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:

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

Όλες οι διαστάσεις είναι σε points (1 point = 1/72 ίντσα). Για μια τυπική διαφάνεια 13.33 × 7.5 ίντσα, ο χώρος συντεταγμένων είναι 960 × 540 points.


Προσθήκη εικόνας από Bytes

Εάν έχετε ήδη την εικόνα ως bytes (π.χ., ληφθείσα από URL ή αναγνωσμένη από βάση δεδομένων):

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)

Έλεγχος της λειτουργίας γεμίσματος

Το picture_fill_format σε ένα PictureFrame ελέγχει πώς η εικόνα γεμίζει τα όρια του πλαισίου:

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)
PictureFillModeΣυμπεριφορά
STRETCHΚλιμακώστε την εικόνα ώστε να γεμίσει το πλαίσιο, αγνοώντας την αναλογία διαστάσεων
TILEΕπαναλάβετε την εικόνα ως μοτίβο πλακιδίων
TILE_FLIPΤοποθετήστε πλακίδια με εναλλασσόμενες οριζόντιες/κατακόρυφες αναστροφές

Προσθήκη πολλαπλών εικόνων σε διαφορετικές διαφάνειες

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)

Καταμέτρηση Εικόνων σε Υπάρχουσα Παρουσίαση

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 μοιράζεται σε όλες τις διαφάνειες: τα ίδια bytes εικόνας αποθηκεύονται μία φορά, ακόμη και αν το πλαίσιο εικόνας εμφανίζεται σε πολλαπλές διαφάνειες.


Δείτε επίσης

 Ελληνικά