עבודה עם תמונות במצגות — Aspose.Slides FOSS for 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);
}