Arbeiten mit Bildern in Präsentationen — Aspose.Slides FOSS für Java
Aspose.Slides FOSS for Java ermöglicht das Einbetten von Bildern in die gemeinsam genutzte Bildsammlung einer Präsentation und deren Anzeige auf Folien mithilfe von PictureFrame‑Formen. Bilder können auch als Hintergrundfüllungen von Formen über FillType.PICTURE verwendet werden.
Ein Bild aus Datei hinzufügen
Laden Sie Bildbytes von der Festplatte und fügen Sie sie mit prs.getImages().addImage() zur Bildsammlung der Präsentation hinzu. Platzieren Sie dann das Bild auf einer Folie als 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);
}Die vier Positionsargumente für addPictureFrame() sind: x, y, width, height in Punkten.
Hinzufügen eines Bildes aus Bytes
Wenn Sie bereits Bildbytes haben (z. B. von einer URL heruntergeladen oder aus einer Datenbank gelesen), übergeben Sie sie direkt an 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);
}Positionierung und Größenbestimmung eines PictureFrame
Das PictureFrame, das von addPictureFrame() zurückgegeben wird, erbt alle Shape Geometrieeigenschaften und kann nach der Erstellung neu positioniert werden:
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);
}Ein Bild als Formfüllung verwenden
Jede Form (nicht nur PictureFrame) kann ein Bild als Hintergrundfüllung verwenden. Setzen Sie FillType.PICTURE und weisen Sie das Bild getPictureFillFormat().getPicture().setImage() zu:
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 skaliert das Bild, um die gesamte Form auszufüllen. Verwenden Sie TILE für wiederholende Muster.
Mehrere Bilder über Folien hinweg hinzufügen
Bilder, die zu prs.getImages() hinzugefügt werden, werden über alle Folien hinweg gemeinsam genutzt. Das gleiche IPPImage‑Objekt kann auf mehreren Folien verwendet werden, ohne die Daten zu duplizieren:
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);
}