Εργασία με εικόνες σε παρουσιάσεις — 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.
Προσθήκη εικόνας από αρχείο
Φορτώστε τα bytes της εικόνας από το δίσκο και προσθέστε τα στη συλλογή εικόνων της παρουσίασης με 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 σε σημεία.
Προσθήκη εικόνας από bytes
Εάν έχετε ήδη τα bytes της εικόνας (π.χ., ληφθέντα από 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);
}