Comment ajouter des images aux diapositives PowerPoint en .NET

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.Foss

Ajouter 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) -> PictureFrame

Toutes 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);
PictureFillModeComportement
StretchRedimensionner l’image pour remplir le cadre, en ignorant le ratio d’aspect
TileRé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.


Voir aussi

 Français