Πώς να προσθέσετε εικόνες σε διαφάνειες PowerPoint στο .NET
Οι εικόνες στο Aspose.Slides FOSS ενσωματώνονται ως picture frames, σχήματα που περιέχουν μια εικόνα και μπορούν να τοποθετηθούν, να αλλάξουν μέγεθος και να μορφοποιηθούν όπως οποιοδήποτε άλλο σχήμα. Τα δεδομένα της εικόνας αποθηκεύονται μία φορά στη συλλογή prs.Images και αναφέρονται από το πλαίσιο.
Προαπαιτούμενα
dotnet add package Aspose.Slides.FossΠροσθήκη εικόνας από αρχείο
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);Η υπογραφή AddPictureFrame:
AddPictureFrame(shapeType, x, y, width, height, image) -> PictureFrameΌλες οι διαστάσεις είναι σε points (1 point = 1/72 ίντσα). Για μια τυπική διαφάνεια 10 x 7,5 ίντσες, ο χώρος συντεταγμένων είναι 720 x 540 points.
Προσθήκη εικόνας από ροή
Αν έχετε ήδη την εικόνα ως ροή (π.χ., ληφθείσα από URL ή αναγνωσμένη από βάση δεδομένων):
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);Έλεγχος της λειτουργίας γεμίσματος
Το PictureFormat σε ένα PictureFrame ελέγχει πώς η εικόνα γεμίζει τα όρια του πλαισίου:
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 | Συμπεριφορά |
|---|---|
Stretch | Κλιμακώστε την εικόνα ώστε να γεμίσει το πλαίσιο, αγνοώντας την αναλογία διαστάσεων |
Tile | Επαναλάβετε την εικόνα ως μοτίβο πλακιδίων |
Προσθήκη Πολλαπλών Εικόνων σε Διαφορετικές Διαφάνειες
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);Καταμέτρηση εικόνων σε υπάρχουσα παρουσίαση
using Aspose.Slides.Foss;
using var prs = new Presentation("with-image.pptx");
Console.WriteLine($"Presentation contains {prs.Images.Count} image(s)");Η συλλογή prs.Images μοιράζεται σε όλες τις διαφάνειες: τα ίδια bytes εικόνας αποθηκεύονται μία φορά ακόμη και αν το πλαίσιο εικόνας εμφανίζεται σε πολλαπλές διαφάνειες.