In bestimmten Fällen müssen Sie möglicherweise Bilder aus PowerPoint-Präsentationen zusammen mit dem Text extrahieren. Um dies zu erreichen, behandelt dieser Artikel das programmgesteuerte Extrahieren von Bildern aus PowerPoint PPT oder PPTX in Java. Sie erfahren auch, wie Sie Bilder nur aus den Hintergründen oder den Formen in PPT-Folien extrahieren.
- Java-API zum Extrahieren von Bildern aus PowerPoint PPT
- Extrahieren Sie Bilder aus einer PPT-Präsentation in Java
- Bilder aus Formen extrahieren
- Bildextraktion aus dem Folienhintergrund
Java-API zum Extrahieren von Bildern aus PowerPoint PPT
Aspose.Slides for Java ist eine beliebte und funktionsreiche API, mit der Sie PowerPoint-Präsentationen nahtlos erstellen und bearbeiten können. Wir werden diese API zum Extrahieren von Bildern aus PPT/PPTX-Dateien verwenden. Sie können die JAR-Datei der API entweder herunterladen oder mit den folgenden Maven-Konfigurationen installieren.
Repository:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Abhängigkeit:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-slides</artifactId>
<version>22.1</version>
<classifier>jdk16</classifier>
</dependency>
Extrahieren Sie Bilder aus einer PowerPoint-PPT in Java
In PowerPoint-Präsentationen werden alle in den Folien verwendeten Bilder in einer Bildersammlung gespeichert. Auf diese Sammlung kann zugegriffen werden und jedes Bild kann als Datei gespeichert werden. Im Folgenden sind die Schritte zum Extrahieren aller Bilder in einer PPT-Präsentation in Java aufgeführt.
- Verwenden Sie zunächst die Klasse Präsentation, um die PPT/PPTX-Präsentation zu laden.
- Greifen Sie dann mit der Methode Presentation.getImages() auf die Bildersammlung in der Präsentation zu.
- Holen Sie sich schließlich Typ und Format jedes Bildes und speichern Sie es.
Das folgende Codebeispiel zeigt, wie Bilder aus einer PowerPoint-PPTX-Datei in Java extrahiert werden.
// Laden Sie die Präsentation
Presentation pres = new Presentation("presentation.pptx");
int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";
// Schleife durch Bilder
for (IPPImage image : pres.getImages()) {
// Bildtyp erhalten
imageType = image.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
// Bild speichern
try {
ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
imageIndex++;
}
Extrahieren Sie Bilder aus Formen in einer PPT
Sie können Bilder auch nur aus den Formen in den PPT-Folien extrahieren. Im Folgenden finden Sie die Schritte, um dies zu erreichen.
- Verwenden Sie zunächst die Klasse Präsentation, um die Präsentationsdatei zu laden.
- Verwenden Sie dann die Methode Presentation.getSlides(), um auf die Foliensammlung zuzugreifen.
- Greifen Sie für jede Folie mit der Methode ISlide.getShapes() auf ihre Formen zu.
- Führen Sie die folgenden Schritte für jede Form in der Sammlung aus:
- Überprüfen Sie, ob die Form eine automatische Form ist und mit einem Bild gefüllt ist, und extrahieren Sie dann ihr Bild mit der Methode getImage().
- Überprüfen Sie, ob es sich bei der Form um einen Bilderrahmen handelt, und extrahieren Sie das Bild mit der Methode getImage().
- Abschließend speichern Sie das Bild als Datei.
Das folgende Codebeispiel zeigt, wie Sie Bilder aus Formen in einer PPT mit Java extrahieren.
// Laden Sie die Präsentation
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;
// Blättern Sie durch die Folien
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// Zugriffsfolie
ISlide sl = pres.getSlides().get_Item(i);
for (int j = 0; j < sl.getShapes().size(); j++) {
// Greifen Sie auf die Form zu
IShape sh = sl.getShapes().get_Item(j);
// Überprüfen Sie, ob es sich um eine automatische Form handelt
if (sh instanceof IAutoShape) {
IAutoShape ashp = (IAutoShape) sh;
if (ashp.getFillFormat().getFillType() == FillType.Picture) {
img = ashp.getFillFormat().getPictureFillFormat().getPicture().getImage();
imageType = img.getContentType();
imageType = imageType.substring(0, imageType.indexOf("/") + 1);
isImageFound = true;
}
}
// Wenn Form ein Bilderrahmen ist
else if (sh instanceof IPictureFrame) {
IPictureFrame pf = (IPictureFrame) sh;
img = pf.getPictureFormat().getPicture().getImage();
imageType = img.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
isImageFound = true;
}
// Stellen Sie das gewünschte Bildformat ein
if (isImageFound) {
try {
ImageIO.write(img.getSystemImage(), imageType,
new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
} catch (IOAusnahme ex) {
// Ausnahme
}
}
isImageFound = false;
}
}
Extrahieren Sie Bilder aus Folienhintergründen in Java
Ein weiteres mögliches Szenario könnte das Extrahieren von Bildern sein, die nur als Folienhintergrund verwendet werden. Die folgenden Schritte zeigen, wie Sie Folienhintergrundbilder in Java extrahieren.
Laden Sie zuerst die Präsentation mit der Klasse Präsentation.
Gehen Sie dann mit der Methode Presentation.getSlides() durch die Folien in der Präsentation.
Führen Sie für jede Folie die folgenden Schritte aus:
Überprüfen Sie, ob die Folie ein Hintergrundbild hat, indem Sie die Methode ISlide.getBackground().getFillFormat().getFillType() verwenden.
Wenn der Hintergrund ein Bild enthält, extrahieren Sie das Bild mit der Methode getImage().
Überprüfen Sie mit der Methode ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType(), ob die Layoutfolie ein Hintergrundbild hat.
Wenn der Hintergrund der Layoutfolie mit einem Bild gefüllt ist, extrahieren Sie es mit der Methode getImage().
Speichern Sie abschließend das extrahierte Bild als Datei.
Das folgende Codebeispiel zeigt, wie Bilder aus Folienhintergründen in einer PPT in Java extrahiert werden.
// Laden Sie die Präsentation
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
com.aspose.slides.IPPImage backImage = null;
String ImagePath = "BackImage_";
int slideIndex = 0;
String imageType = "";
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// Zugriffsfolie
ISlide sl = pres.getSlides().get_Item(i);
// Überprüfen Sie, ob der Hintergrund mit Bild gefüllt ist
if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Holen Sie sich das Hintergrundbild
backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();
// Bild speichern
BufferedImage image = backImage.getSystemImage();
imageType = backImage.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
try {
ImageIO.write(image, imageType,
new File(ImagePath + "Slide_" + slideIndex + "." + imageType.toString()));
} catch (IOException ex) {
// Ausnahmemeldung lesen
}
} else {
// Überprüfen Sie, ob das Folienlayout einen Bildhintergrund hat
if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Holen Sie sich das Hintergrundbild
backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
.getImage();
// Bild speichern
BufferedImage image = backImage.getSystemImage();
imageType = backImage.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
try {
ImageIO.write(image, imageType,
new File(ImagePath + "LayoutSlide_" + slideIndex + "." + imageType.toString()));
} catch (IOException ex) {
// Ausnahmemeldung lesen
}
}
}
}
Holen Sie sich eine kostenlose Lizenz
Aspose bietet eine kostenlose temporäre Lizenz zur Nutzung von Aspose.Slides für Java ohne Evaluierungseinschränkungen. Sie können sich selbst einen besorgen.
Fazit
In diesem Artikel haben wir gezeigt, wie man Bilder aus PowerPoint PPT/PPTX in Java extrahiert. Darüber hinaus haben wir behandelt, wie Sie Bilder entweder separat aus der Form oder aus Folienhintergründen extrahieren können. Außerdem können Sie mehr über Aspose.Slides für Java lesen, indem Sie die Dokumentation besuchen. Sie können Ihre Fragen auch in unserem Forum posten.