Extrahieren Sie Bilder aus PowerPoint PPT in Java

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

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.

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.

Siehe auch