Wie man Bilder zu PowerPoint-Folien in Java hinzufügt
Bilder in Aspose.Slides FOSS werden als picture frames eingebettet, Formen, die ein Bild enthalten und wie jede andere Form positioniert, skaliert und formatiert werden können. Die Bilddaten werden einmal in der prs.getImages()‑Sammlung gespeichert und vom Rahmen referenziert.
Voraussetzungen
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Ein Bild aus einer Datei hinzufügen
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// Load image into the presentation's image collection
byte[] imageData = Files.readAllBytes(Paths.get("photo.jpg"));
IPPImage img = prs.getImages().addImage(imageData);
// Add a picture frame at (x=50, y=50, width=400, height=300) in points
IPictureFrame frame = slide.getShapes().addPictureFrame(
ShapeType.RECTANGLE,
50, 50, 400, 300,
img
);
prs.save("with-image.pptx", SaveFormat.PPTX);
}Die addPictureFrame Signatur:
addPictureFrame(shapeType, x, y, width, height, image) -> IPictureFrameAlle Abmessungen sind in Punkten (1 Punkt = 1/72 Zoll). Für eine Standardfolie von 10 × 7,5 Zoll beträgt der Koordinatenraum 720 × 540 Punkte.
Ein Bild aus einem Stream hinzufügen
Wenn Sie das Bild bereits als InputStream vorliegen haben (z. B. von einer URL heruntergeladen oder aus einer Datenbank gelesen):
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.io.FileInputStream;
try (Presentation prs = new Presentation();
FileInputStream fis = new FileInputStream("logo.png")) {
IPPImage img = prs.getImages().addImage(fis);
prs.getSlides().get(0).getShapes().addPictureFrame(
ShapeType.RECTANGLE,
200, 100, 300, 200,
img
);
prs.save("logo-slide.pptx", SaveFormat.PPTX);
}Mehrere Bilder zu verschiedenen Folien hinzufügen
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;
String[] imageFiles = {"slide1.jpg", "slide2.jpg", "slide3.jpg"};
try (Presentation prs = new Presentation()) {
ILayoutSlide layout = prs.getSlides().get(0).getLayoutSlide();
// Ensure enough slides exist
while (prs.getSlides().size() < imageFiles.length) {
prs.getSlides().addEmptySlide(layout);
}
for (int i = 0; i < imageFiles.length; i++) {
if (!Files.exists(Paths.get(imageFiles[i]))) continue;
byte[] data = Files.readAllBytes(Paths.get(imageFiles[i]));
IPPImage img = prs.getImages().addImage(data);
prs.getSlides().get(i).getShapes().addPictureFrame(
ShapeType.RECTANGLE, 0, 0, 720, 540, img
);
}
prs.save("multi-image.pptx", SaveFormat.PPTX);
}Bilder in einer vorhandenen Präsentation zählen
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.IPictureFrame;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation("with-image.pptx")) {
System.out.println("Presentation contains "
+ prs.getImages().size() + " image(s)");
}Die prs.getImages()-Sammlung wird über alle Folien hinweg gemeinsam genutzt: Die gleichen Bildbytes werden nur einmal gespeichert, selbst wenn der Bildrahmen auf mehreren Folien erscheint.