کار با تصاویر در ارائهها — Aspose.Slides FOSS برای Java
Aspose.Slides FOSS for Java به شما امکان میدهد تصاویر را در مجموعه تصویر مشترک یک ارائه جاسازی کنید و آنها را بر روی اسلایدها با استفاده از شکلهای 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);
}