En ciertos casos, es posible que deba extraer imágenes de presentaciones de PowerPoint junto con el texto. Para lograrlo, este artículo cubre cómo extraer imágenes de PowerPoint PPT o PPTX mediante programación en Java. También aprenderá cómo extraer imágenes solo de los fondos o las formas en las diapositivas PPT.
- API de Java para extraer imágenes de PowerPoint PPT
- Extraer imágenes de una presentación PPT en Java
- Extraer imágenes de formas
- Extracción de imagen del fondo de la diapositiva
API de Java para extraer imágenes de PowerPoint PPT
Aspose.Slides for Java es una API popular y rica en funciones que le permite crear y manipular presentaciones de PowerPoint sin problemas. Usaremos esta API para extraer imágenes de archivos PPT/PPTX. Puede descargar el JAR de la API o instalarlo usando las siguientes configuraciones de Maven.
Repositorio:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Dependencia:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-slides</artifactId>
<version>22.1</version>
<classifier>jdk16</classifier>
</dependency>
Extraer imágenes de un PPT de PowerPoint en Java
En las presentaciones de PowerPoint, todas las imágenes utilizadas en las diapositivas se almacenan en una colección de imágenes. Se puede acceder a esta colección y cada imagen se puede guardar como un archivo. Los siguientes son los pasos para extraer todas las imágenes en una presentación PPT en Java.
- Primero, use la clase Presentation para cargar la presentación PPT/PPTX.
- Luego, acceda a la colección de imágenes en la presentación usando el método Presentation.getImages().
- Finalmente, obtenga el tipo y formato de cada imagen y guárdela.
El siguiente ejemplo de código muestra cómo extraer imágenes de un archivo PPTX de PowerPoint en Java.
// Cargar la presentación
Presentation pres = new Presentation("presentation.pptx");
int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";
// Bucle a través de imágenes
for (IPPImage image : pres.getImages()) {
// Obtener tipo de imagen
imageType = image.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
// Guardar imagen
try {
ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
imageIndex++;
}
Extraer imágenes de formas en un PPT
También puede extraer imágenes solo de las formas en las diapositivas PPT. Los siguientes son los pasos para lograrlo.
- Primero, use la clase Presentation para cargar el archivo de presentación.
- Luego, use el método Presentation.getSlides() para acceder a la colección de diapositivas.
- Para cada diapositiva, acceda a sus formas utilizando el método ISlide.getShapes().
- Realice los siguientes pasos para cada forma de la colección:
- Compruebe si la forma es una forma automática y está rellena con una imagen, luego extraiga su imagen usando el método getImage().
- Compruebe si la forma es un marco de imagen y luego extraiga su imagen usando el método getImage().
- Finalmente, guarde la imagen como un archivo.
El siguiente ejemplo de código muestra cómo extraer imágenes de formas en un PPT usando Java.
// Cargar la presentación
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;
// Bucle a través de diapositivas
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// Diapositiva de acceso
ISlide sl = pres.getSlides().get_Item(i);
for (int j = 0; j < sl.getShapes().size(); j++) {
// Accede a la forma
IShape sh = sl.getShapes().get_Item(j);
// Compruebe si es una forma automática
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 forma es un marco de imagen
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;
}
// Establecer el formato de imagen deseado
if (isImageFound) {
try {
ImageIO.write(img.getSystemImage(), imageType,
new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
} catch (IOExcepción ex) {
// Excepción
}
}
isImageFound = false;
}
}
Extraer imágenes de fondos de diapositivas en Java
Otro escenario posible podría ser la extracción de imágenes que se usan solo como fondos de diapositivas. Los siguientes pasos muestran cómo extraer imágenes de fondo de diapositivas en Java.
Primero, cargue la presentación usando la clase Presentation.
Luego, recorra las diapositivas de la presentación usando el método Presentation.getSlides().
Para cada diapositiva, realice los siguientes pasos:
Verifique si la diapositiva tiene una imagen de fondo usando el método ISlide.getBackground().getFillFormat().getFillType().
Si el fondo tiene una imagen, extráigala usando el método getImage().
Compruebe si la diapositiva de diseño tiene una imagen de fondo con el método ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType().
Si el fondo de la diapositiva de diseño está lleno de una imagen, extráigala usando el método getImage().
Finalmente, guarde la imagen extraída como un archivo.
El siguiente ejemplo de código muestra cómo extraer imágenes de fondos de diapositivas en un PPT en Java.
// Cargar la presentación
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++;
// Diapositiva de acceso
ISlide sl = pres.getSlides().get_Item(i);
// Compruebe si el fondo está lleno de imagen
if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Obtener la imagen de fondo
backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();
// Guardar imagen
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) {
// leer mensaje de excepción
}
} else {
// compruebe si el diseño de la diapositiva tiene un fondo de imagen
if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Obtener la imagen de fondo
backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
.getImage();
// Guardar imagen
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) {
// leer mensaje de excepción
}
}
}
}
Obtenga una licencia gratis
Aspose ofrece una licencia temporal gratuita para usar Aspose.Slides for Java sin limitaciones de evaluación. Puedes conseguir uno para ti.
Conclusión
En este artículo, hemos demostrado cómo extraer imágenes de PowerPoint PPT/PPTX en Java. Además, hemos cubierto cómo extraer imágenes de la forma o de los fondos de las diapositivas por separado. Además, puede leer más sobre Aspose.Slides for Java visitando la documentación. Además, puede publicar sus consultas en nuestro foro.