Πώς να προσθέσετε εικόνες σε διαφάνειες PowerPoint στο .NET

Πώς να προσθέσετε εικόνες σε διαφάνειες 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 εικόνας αποθηκεύονται μία φορά ακόμη και αν το πλαίσιο εικόνας εμφανίζεται σε πολλαπλές διαφάνειες.


Δείτε επίσης

 Ελληνικά