Comment ajouter des images aux diapositives PowerPoint en Python

Comment ajouter des images aux diapositives PowerPoint en Python

Les images dans Aspose.Slides FOSS sont intégrées sous forme de cadres d’image, des formes qui contiennent une image et peuvent être positionnées, redimensionnées et stylisées comme n’importe quelle autre forme. Les données de l’image sont stockées une fois dans la collection prs.images et référencées par le cadre.


Prérequis

pip install aspose-slides-foss

Ajouter une image à partir d’un fichier

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)

La signature add_picture_frame :

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

Toutes les dimensions sont en points (1 point = 1/72 pouce). Pour une diapositive standard de 13,33 × 7,5 pouces, l’espace de coordonnées est de 960 × 540 points.


Ajouter une image à partir d’octets

Si vous avez déjà l’image sous forme d’octets (par exemple, téléchargée depuis une URL ou lue depuis une base de données) :

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)

Contrôler le mode de remplissage

Le picture_fill_format sur un PictureFrame contrôle la façon dont l’image remplit les limites du cadre :

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)
PictureFillModeComportement
STRETCHRedimensionner l’image pour remplir le cadre, en ignorant le ratio d’aspect
TILERépéter l’image comme un motif en mosaïque
TILE_FLIPMosaïquer avec des retournements horizontaux/verticaux alternés

Ajouter plusieurs images à différentes diapositives

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)

Compter les images dans une présentation existante

import aspose.slides_foss as slides

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

La collection prs.images est partagée sur toutes les diapositives : les mêmes octets d’image sont stockés une seule fois même si le cadre d’image apparaît sur plusieurs diapositives.


Voir aussi

 Français