PowerPoint Slaytlarına .NET'te Görüntü Ekleme
Aspose.Slides FOSS’taki görüntüler picture frames olarak gömülür, bir görüntüyü tutan ve diğer şekiller gibi konumlandırılabilen, yeniden boyutlandırılabilen ve biçimlendirilebilen şekillerdir. Görüntü verileri prs.Images koleksiyonunda bir kez depolanır ve çerçeve tarafından referans alınır.
Önkoşullar
dotnet add package Aspose.Slides.FossBir Dosyadan Görüntü Ekle
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 imzası:
AddPictureFrame(shapeType, x, y, width, height, image) -> PictureFrameTüm boyutlar points (1 point = 1/72 inç) cinsindendir. Standart bir 10 × 7,5 inç slayt için koordinat alanı 720 × 540 points’tir.
Bir Akıştan Görüntü Ekle
Eğer görüntüyü zaten bir akış olarak elinizde bulunduruyorsanız (ör. bir URL’den indirilmiş ya da bir veritabanından okunmuş):
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);Dolgu Modunu Kontrol Et
PictureFrame üzerindeki PictureFormat, görüntünün çerçeve sınırlarını nasıl doldurduğunu kontrol eder:
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 | Davranış |
|---|---|
Stretch | Görüntüyü çerçeveyi dolduracak şekilde ölçeklendir, en boy oranını göz ardı et |
Tile | Görüntüyü döşeme deseni olarak tekrarla |
Farklı Slaytlara Birden Çok Görüntü Ekle
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);Mevcut Bir Sunumda Görüntüleri Sayma
using Aspose.Slides.Foss;
using var prs = new Presentation("with-image.pptx");
Console.WriteLine($"Presentation contains {prs.Images.Count} image(s)");prs.Images koleksiyonu tüm slaytlar arasında paylaşılır: aynı görüntü baytları bir kez depolanır, hatta resim çerçevesi birden fazla slaytta görünsede.