Estrai immagini da PowerPoint PPT in Java

In alcuni casi, potrebbe essere necessario estrarre le immagini dalle presentazioni PowerPoint insieme al testo. Per raggiungere questo obiettivo, questo articolo illustra come estrarre immagini da PowerPoint PPT o PPTX a livello di codice in Java. Imparerai anche come estrarre immagini solo dagli sfondi o dalle forme nelle diapositive PPT.

API Java per estrarre immagini da PowerPoint PPT

Aspose.Slides for Java è un’API popolare e ricca di funzionalità che consente di creare e manipolare presentazioni PowerPoint senza interruzioni. Useremo questa API per estrarre immagini da file PPT/PPTX. Puoi scaricare il JAR dell’API o installarlo utilizzando le seguenti configurazioni Maven.

Archivio:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Dipendenza:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-slides</artifactId>
    <version>22.1</version>
    <classifier>jdk16</classifier>
</dependency>

Estrai immagini da un PowerPoint PPT in Java

Nelle presentazioni PowerPoint, tutte le immagini utilizzate nelle diapositive vengono archiviate in una raccolta di immagini. È possibile accedere a questa raccolta e salvare ogni immagine come file. Di seguito sono riportati i passaggi per estrarre tutte le immagini in una presentazione PPT in Java.

  • Per prima cosa, usa la classe Presentazione per caricare la presentazione PPT/PPTX.
  • Quindi, accedi alla raccolta di immagini nella presentazione utilizzando il metodo Presentation.getImages().
  • Infine, ottieni il tipo e il formato di ciascuna immagine e salvala.

L’esempio di codice seguente mostra come estrarre immagini da un file PPTX di PowerPoint in Java.

// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");

int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";

// Scorri le immagini
for (IPPImage image : pres.getImages()) {
  // Ottieni tipo di immagine
  imageType = image.getContentType();
  imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

  // Salva immagine
  try {
    ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
  } catch (IOException ex) {
    System.out.println(ex.getMessage());
  }
  imageIndex++;
}

Estrai immagini dalle forme in un PPT

Puoi anche estrarre immagini solo dalle forme nelle diapositive PPT. Di seguito sono riportati i passaggi per farlo.

  • Per prima cosa, usa la classe Presentazione per caricare il file di presentazione.
  • Quindi, usa il metodo Presentation.getSlides() per accedere alla raccolta di diapositive.
  • Per ogni diapositiva, accedi alle sue forme usando il metodo ISlide.getShapes().
  • Eseguire i seguenti passaggi per ciascuna forma nella raccolta:
    • Controlla se la forma è una forma automatica e riempita con un’immagine, quindi estrai la sua immagine usando il metodo getImage().
    • Controlla se la forma è una cornice, quindi estrai la sua immagine usando il metodo getImage().
    • Infine, salva l’immagine come file.

L’esempio di codice seguente mostra come estrarre immagini dalle forme in un PPT utilizzando Java.

// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");

com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;

// Passa attraverso le diapositive
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Accedi alla diapositiva
  ISlide sl = pres.getSlides().get_Item(i);

  for (int j = 0; j < sl.getShapes().size(); j++) {
    // Accedi alla forma
    IShape sh = sl.getShapes().get_Item(j);

    // Controlla se è una forma automatica
    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;
      }
    }

    // Se la forma è una cornice
    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;
    }

    // Impostare il formato immagine desiderato
    if (isImageFound) {
      try {
        ImageIO.write(img.getSystemImage(), imageType,
            new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
      } catch (IOEccezione ex) {
        // Eccezione
      }
    }
    isImageFound = false;
  }
}

Estrai le immagini dagli sfondi delle diapositive in Java

Un altro possibile scenario potrebbe essere l’estrazione di immagini che vengono utilizzate solo come sfondi per le diapositive. I passaggi seguenti mostrano come estrarre le immagini di sfondo delle diapositive in Java.

L’esempio di codice seguente mostra come estrarre immagini dagli sfondi delle diapositive in un PPT in Java.

// Carica la presentazione
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++;

  // Accedi alla diapositiva
  ISlide sl = pres.getSlides().get_Item(i);

  // Controlla se lo sfondo è pieno di immagini
  if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
    // Ottieni l'immagine di sfondo
    backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();

    // Salva immagine
    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) {
      // leggi il messaggio di eccezione
    }
  } else {
    // controlla se il layout della diapositiva ha lo sfondo dell'immagine
    if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {

      // Ottieni l'immagine di sfondo
      backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
          .getImage();

      // Salva immagine
      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) {
        // leggi il messaggio di eccezione
      }
    }
  }
}

Ottieni una licenza gratuita

Aspose offre una licenza temporanea gratuita per utilizzare Aspose.Slides per Java senza limitazioni di valutazione. Puoi prenderne uno per te.

Conclusione

In questo articolo, abbiamo dimostrato come estrarre immagini da PowerPoint PPT/PPTX in Java. Inoltre, abbiamo spiegato come estrarre le immagini dalla forma o dagli sfondi delle diapositive separatamente. Inoltre, puoi leggere di più su Aspose.Slides per Java visitando la documentazione. Inoltre, puoi inviare le tue domande al nostro forum.

Guarda anche