Wie man Bilder zu PowerPoint-Folien in .NET hinzufügt

Wie man Bilder zu PowerPoint-Folien in .NET hinzufügt

Bilder in Aspose.Slides FOSS werden als Bildrahmen eingebettet, Formen, die ein Bild enthalten und wie jede andere Form positioniert, skaliert und formatiert werden können. Die Bilddaten werden einmal in der prs.Images-Sammlung gespeichert und vom Rahmen referenziert.


Voraussetzungen

dotnet add package Aspose.Slides.Foss

Ein Bild aus einer Datei hinzufügen

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);

Die AddPictureFrame Signatur:

AddPictureFrame(shapeType, x, y, width, height, image) -> PictureFrame

Alle Abmessungen sind in Punkten (1 Punkt = 1/72 Zoll). Für eine Standardfolie von 10 × 7,5 Zoll beträgt der Koordinatenraum 720 × 540 Punkte.


Ein Bild aus einem Stream hinzufügen

Wenn Sie das Bild bereits als Stream haben (z. B. von einer URL heruntergeladen oder aus einer Datenbank gelesen):

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);

Füllmodus steuern

Der PictureFormat auf einem PictureFrame steuert, wie das Bild die Rahmenbegrenzungen füllt:

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);
PictureFillModeVerhalten
StretchBild skalieren, um den Rahmen zu füllen, Seitenverhältnis ignorieren
TileBild als Kachelmuster wiederholen

Mehrere Bilder zu verschiedenen Folien hinzufügen

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);

Bilder in einer bestehenden Präsentation zählen

using Aspose.Slides.Foss;

using var prs = new Presentation("with-image.pptx");
Console.WriteLine($"Presentation contains {prs.Images.Count} image(s)");

Die prs.Images-Sammlung wird über alle Folien hinweg gemeinsam genutzt: dieselben Bildbytes werden nur einmal gespeichert, selbst wenn der Bildrahmen auf mehreren Folien erscheint.


Siehe auch

 Deutsch