Comment ajouter des images aux diapositives PowerPoint en .NET
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 seule fois dans la collection prs.Images et référencées par le cadre.
Prérequis
dotnet add package Aspose.Slides.FossAjouter une image à partir d’un fichier
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// Load image into the presentation's image collection
byte[] imageData = File.ReadAllBytes("photo.jpg");
var img = prs.Images.AddImage(imageData);
// Add a picture frame at (x=50, y=50, width=400, height=300) in points
var frame = slide.Shapes.AddPictureFrame(
ShapeType.Rectangle,
50, 50, 400, 300,
img
);
prs.Save("with-image.pptx", SaveFormat.Pptx);La signature AddPictureFrame :
AddPictureFrame(shapeType, x, y, width, height, image) -> PictureFrameToutes les dimensions sont en points (1 point = 1/72 pouce). Pour une diapositive standard de 10 × 7,5 pouces, l’espace de coordonnées est de 720 × 540 points.
Ajouter une image à partir d’un flux
Si vous avez déjà l’image sous forme de flux (par exemple, téléchargée depuis une URL ou lue depuis une base de données) :
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
using var stream = File.OpenRead("logo.png");
var img = prs.Images.AddImage(stream);
prs.Slides[0].Shapes.AddPictureFrame(
ShapeType.Rectangle,
200, 100, 300, 200,
img
);
prs.Save("logo-slide.pptx", SaveFormat.Pptx);Contrôler le mode de remplissage
Le PictureFormat sur un PictureFrame contrôle la façon dont l’image remplit les limites du cadre :
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
byte[] texData = File.ReadAllBytes("texture.png");
var img = prs.Images.AddImage(texData);
var frame = prs.Slides[0].Shapes.AddPictureFrame(
ShapeType.Rectangle, 50, 50, 600, 350, img
);
// STRETCH: scale image to fill the frame exactly (default)
frame.PictureFormat.PictureFillMode = PictureFillMode.Stretch;
// TILE: repeat the image in a grid pattern
// frame.PictureFormat.PictureFillMode = 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 sous forme de motif en mosaïque |
Ajouter plusieurs images à différentes diapositives
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
string[] imageFiles = { "slide1.jpg", "slide2.jpg", "slide3.jpg" };
using var prs = new Presentation();
var layout = prs.Slides[0].LayoutSlide;
// Ensure enough slides exist
while (prs.Slides.Count < imageFiles.Length)
prs.Slides.AddEmptySlide(layout);
for (int i = 0; i < imageFiles.Length; i++)
{
if (!File.Exists(imageFiles[i])) continue;
var img = prs.Images.AddImage(File.ReadAllBytes(imageFiles[i]));
prs.Slides[i].Shapes.AddPictureFrame(
ShapeType.Rectangle, 0, 0, 720, 540, img
);
}
prs.Save("multi-image.pptx", SaveFormat.Pptx);Compter les images dans une présentation existante
using Aspose.Slides.Foss;
using var prs = new Presentation("with-image.pptx");
Console.WriteLine($"Presentation contains {prs.Images.Count} 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.