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
- Extraire des images d’une présentation PPT en Java
- Extraire des images à partir de formes
- Extraction d’image à partir de l’arrière-plan de la diapositive
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.
Tout d’abord, chargez la présentation à l’aide de la classe Presentation.
Ensuite, parcourez les diapositives de la présentation en utilisant la méthode Presentation.getSlides().
Pour chaque diapositive, effectuez les étapes suivantes :
Vérifiez si la diapositive a une image d’arrière-plan à l’aide de la méthode ISlide.getBackground().getFillFormat().getFillType().
Si l’arrière-plan contient une image, extrayez l’image à l’aide de la méthode getImage().
Vérifiez si la diapositive de mise en page a une image d’arrière-plan à l’aide de la méthode ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType().
Si l’arrière-plan de la diapositive de mise en page est rempli d’une image, extrayez-la à l’aide de la méthode getImage().
Enfin, enregistrez l’image extraite en tant que fichier.
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.