Extraiga imágenes de PowerPoint PPT en Java

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

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.

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.

Ver también