کار با تصاویر در ارائهها — Aspose.Slides FOSS برای Java
Aspose.Slides FOSS for Java lets you embed images in a presentation’s shared image collection and display them on slides using PictureFrame شکلها. همچنین میتوان از تصاویر به عنوان پرکنندهٔ پسزمینهٔ شکلها استفاده کرد از طریق FillType.PICTURE.
افزودن تصویر از فایل
بایتهای تصویر را از دیسک بارگذاری کنید و با آنها به مجموعهٔ تصاویر ارائه اضافه کنید prs.getImages().addImage(). سپس تصویر را بر روی یک اسلاید به عنوان یک PictureFrame:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;
try (Presentation prs = new Presentation()) {
// Add the image to the shared collection
byte[] imageData = Files.readAllBytes(Path.of("logo.png"));
var img = prs.getImages().addImage(imageData);
// Place it on the slide as a PictureFrame
var slide = prs.getSlides().get(0);
slide.getShapes().addPictureFrame(ShapeType.RECTANGLE, 50, 50, 300, 200, img);
prs.save("with-image.pptx", SaveFormat.PPTX);
}چهار آرگومان موقعیتی برای addPictureFrame() هستند: x, y, width, height بر حسب نقطه.
افزودن تصویر از بایتها
اگر قبلاً بایتهای تصویر را دارید (مثلاً از یک URL دانلود کردهاید یا از یک پایگاه داده خواندهاید)، آنها را مستقیماً به addImage():
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;
// Simulate having bytes in memory
byte[] imageBytes = Files.readAllBytes(Path.of("photo.jpg"));
try (Presentation prs = new Presentation()) {
var img = prs.getImages().addImage(imageBytes);
prs.getSlides().get(0).getShapes().addPictureFrame(ShapeType.RECTANGLE, 100, 80, 400, 250, img);
prs.save("from-bytes.pptx", SaveFormat.PPTX);
}موقعیتدهی و تعیین اندازهٔ یک PictureFrame
این PictureFrame برگشت داده شده توسط addPictureFrame() تمام موارد را به ارث میبرد Shape ویژگیهای هندسی و میتوان پس از ایجاد موقعیت آن را تغییر داد:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;
try (Presentation prs = new Presentation()) {
byte[] imageData = Files.readAllBytes(Path.of("photo.jpg"));
var img = prs.getImages().addImage(imageData);
var pf = prs.getSlides().get(0).getShapes().addPictureFrame(ShapeType.RECTANGLE, 0, 0, 100, 100, img);
// Reposition and resize after creation
pf.setX(50);
pf.setY(100);
pf.setWidth(350);
pf.setHeight(250);
prs.save("positioned.pptx", SaveFormat.PPTX);
}استفاده از تصویر بهعنوان پرکنندهٔ شکل
هر شکلی (نه فقط PictureFrame) میتواند از یک تصویر به عنوان پرکن پسزمینه استفاده کند. تنظیم FillType.PICTURE و تصویر را به getPictureFillFormat().getPicture().setImage():
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.PictureFillMode;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;
try (Presentation prs = new Presentation()) {
byte[] imageData = Files.readAllBytes(Path.of("background.png"));
var img = prs.getImages().addImage(imageData);
var slide = prs.getSlides().get(0);
var shape = slide.getShapes().addAutoShape(ShapeType.ROUND_CORNER_RECTANGLE, 50, 50, 400, 250);
shape.getFillFormat().setFillType(FillType.PICTURE);
shape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.STRETCH);
shape.getFillFormat().getPictureFillFormat().getPicture().setImage(img);
prs.save("picture-fill.pptx", SaveFormat.PPTX);
}PictureFillMode.STRETCH تصویر را بهگونهای مقیاس میدهد که تمام شکل را پر کند. استفاده TILE برای الگوهای تکراری.
افزودن چندین تصویر در اسلایدهای مختلف
تصاویر اضافه شده به prs.getImages() در تمام اسلایدها بهاشتراک گذاشته میشوند. همان IPPImage شیء میتواند در چندین اسلاید بدون تکرار دادهها استفاده شود:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Path;
try (Presentation prs = new Presentation()) {
byte[] logoData = Files.readAllBytes(Path.of("logo.png"));
var logo = prs.getImages().addImage(logoData);
// Add the same image to the first slide
prs.getSlides().get(0).getShapes().addPictureFrame(ShapeType.RECTANGLE, 600, 10, 100, 40, logo);
prs.save("shared-image.pptx", SaveFormat.PPTX);
}