Extraire des images de PowerPoint PPT en Java

Dans certains cas, vous devrez peut-être extraire des images de présentations PowerPoint avec le texte. Pour y parvenir, cet article explique comment extraire des images de PowerPoint PPT ou PPTX par programmation en Java. Vous apprendrez également à extraire des images uniquement à partir des arrière-plans ou des formes dans les diapositives PPT.

API Java pour extraire des images de PowerPoint PPT

Aspose.Slides for Java est une API populaire et riche en fonctionnalités qui vous permet de créer et de manipuler des présentations PowerPoint de manière transparente. Nous utiliserons cette API pour extraire des images à partir de fichiers PPT/PPTX. Vous pouvez soit télécharger le JAR de l’API ou l’installer à l’aide des configurations Maven suivantes.

Repository:

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

Dependency:

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

Extraire des images d’un PPT PowerPoint en Java

Dans les présentations PowerPoint, toutes les images utilisées dans les diapositives sont stockées dans une collection d’images. Cette collection est accessible et chaque image peut être enregistrée dans un fichier. Voici les étapes pour extraire toutes les images d’une présentation PPT en Java.

  • Tout d’abord, utilisez la classe Presentation pour charger la présentation PPT/PPTX.
  • Ensuite, accédez à la collection d’images dans la présentation à l’aide de la méthode Presentation.getImages().
  • Enfin, récupérez le type et le format de chaque image et enregistrez-la.

L’exemple de code suivant montre comment extraire des images d’un fichier PowerPoint PPTX en Java.

// Charger la présentation
Presentation pres = new Presentation("presentation.pptx");

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

// Boucle à travers les images
for (IPPImage image : pres.getImages()) {
  // Obtenir le type d'image
  imageType = image.getContentType();
  imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

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

Extraire des images de formes dans un PPT

Vous pouvez également extraire des images uniquement à partir des formes des diapositives PPT. Voici les étapes pour y parvenir.

  • Tout d’abord, utilisez la classe Presentation pour charger le fichier de présentation.
  • Ensuite, utilisez la méthode Presentation.getSlides() pour accéder à la collection de diapositives.
  • Pour chaque diapositive, accédez à ses formes à l’aide de la méthode ISlide.getShapes().
  • Effectuez les étapes suivantes pour chaque forme de la collection :
    • Vérifiez si la forme est une forme automatique et remplie d’une image, puis extrayez son image à l’aide de la méthode getImage().
    • Vérifiez si la forme est un cadre d’image, puis extrayez son image à l’aide de la méthode getImage().
    • Enfin, enregistrez l’image en tant que fichier.

L’exemple de code suivant montre comment extraire des images de formes dans un PPT à l’aide de Java.

// Charger la présentation
Presentation pres = new Presentation("presentation.pptx");

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

// Boucle à travers les diapositives
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Diapositive d'accès
  ISlide sl = pres.getSlides().get_Item(i);

  for (int j = 0; j < sl.getShapes().size(); j++) {
    // Accéder à la forme
    IShape sh = sl.getShapes().get_Item(j);

    // Vérifiez s'il s'agit d'une forme automatique
    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;
      }
    }

    // Si la forme est un cadre photo
    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;
    }

    // Définir le format d'image souhaité
    if (isImageFound) {
      try {
        ImageIO.write(img.getSystemImage(), imageType,
            new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
      } catch (IOException ex) {
        // Exception
      }
    }
    isImageFound = false;
  }
}

Extraire des images à partir d’arrière-plans de diapositives en Java

Un autre scénario possible pourrait être l’extraction d’images utilisées uniquement comme arrière-plan de diapositive. Les étapes suivantes montrent comment extraire les images d’arrière-plan des diapositives en Java.

L’exemple de code suivant montre comment extraire des images d’arrière-plans de diapositives dans un PPT en Java.

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

  // Diapositive d'accès
  ISlide sl = pres.getSlides().get_Item(i);

  // Vérifiez si l'arrière-plan est rempli d'image
  if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
    // Obtenir l'image de fond
    backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();

    // Enregistrer l'image
    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) {
      // lire le message d'exception
    }
  } else {
    // vérifier si la disposition des diapositives a un arrière-plan d'image
    if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {

      // Obtenir l'image de fond
      backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
          .getImage();

      // Enregistrer l'image
      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) {
        // lire le message d'exception
      }
    }
  }
}

Obtenez une licence gratuite

Aspose offre une licence temporaire gratuite pour utiliser Aspose.Slides for Java sans limitation d’évaluation. Vous pouvez en obtenir un pour vous-même.

Conclusion

Dans cet article, nous avons montré comment extraire des images de PowerPoint PPT/PPTX en Java. De plus, nous avons expliqué comment extraire des images de la forme ou des arrière-plans de diapositives séparément. En outre, vous pouvez en savoir plus sur Aspose.Slides for Java en visitant la documentation. Vous pouvez également poster vos questions sur notre forum.

Voir également