Hoe afbeeldingen toe te voegen aan PowerPoint-dia's in .NET
Afbeeldingen in Aspose.Slides FOSS worden ingebed als picture frames, vormen die een afbeelding bevatten en kunnen worden gepositioneerd, van grootte veranderd en gestyled zoals elke andere vorm. De afbeeldingsgegevens worden één keer opgeslagen in de prs.Images-collectie en door het frame gerefereerd.
Vereisten
dotnet add package Aspose.Slides.FossAfbeelding toevoegen vanuit een bestand
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);De AddPictureFrame handtekening:
AddPictureFrame(shapeType, x, y, width, height, image) -> PictureFrameAlle afmetingen zijn in points (1 point = 1/72 inch). Voor een standaard dia van 10 × 7,5 inch is de coördinatenruimte 720 × 540 points.
Afbeelding toevoegen vanuit een stream
Als je de afbeelding al als een stream hebt (bijv. gedownload van een URL of gelezen uit een database):
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);Regel de vulmodus
De PictureFormat op een PictureFrame bepaalt hoe de afbeelding de framegrenzen vult:
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 | Gedrag |
|---|---|
Stretch | Scha al de afbeelding om het kader te vullen, negeer de beeldverhouding |
Tile | Herhaal de afbeelding als een tegelpatroon |
Meerdere afbeeldingen toevoegen aan verschillende dia’s
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);Aantal afbeeldingen in een bestaande presentatie
using Aspose.Slides.Foss;
using var prs = new Presentation("with-image.pptx");
Console.WriteLine($"Presentation contains {prs.Images.Count} image(s)");De prs.Images-collectie wordt gedeeld over alle dia’s: dezelfde afbeeldingsbytes worden één keer opgeslagen, zelfs als het afbeeldingskader op meerdere dia’s verschijnt.