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-fossAjouter 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) → PictureFrameToutes 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)PictureFillMode | Comportement |
|---|---|
STRETCH | Redimensionner l’image pour remplir le cadre, en ignorant le ratio d’aspect |
TILE | Répéter l’image comme un motif en mosaïque |
TILE_FLIP | Mosaï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.