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.FossEin 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) -> PictureFrameAlle 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);PictureFillMode | Verhalten |
|---|---|
Stretch | Bild skalieren, um den Rahmen zu füllen, Seitenverhältnis ignorieren |
Tile | Bild 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.