Extraia imagens do PowerPoint PPT em Java

Em certos casos, pode ser necessário extrair imagens de apresentações do PowerPoint junto com o texto. Para conseguir isso, este artigo aborda como extrair imagens do PowerPoint PPT ou PPTX programaticamente em Java. Você também aprenderá a extrair imagens apenas dos planos de fundo ou das formas em slides PPT.

API Java para extrair imagens do PowerPoint PPT

Aspose.Slides for Java é uma API popular e rica em recursos que permite criar e manipular apresentações do PowerPoint sem problemas. Usaremos esta API para extrair imagens de arquivos PPT/PPTX. Você pode baixar o JAR da API ou instalá-lo usando as seguintes configurações do Maven.

Repositório:

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

Dependência:

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

Extrair imagens de um PowerPoint PPT em Java

Nas apresentações do PowerPoint, todas as imagens usadas nos slides são armazenadas em uma coleção de imagens. Esta coleção pode ser acessada e cada imagem pode ser salva como um arquivo. A seguir estão os passos para extrair todas as imagens em uma apresentação PPT em Java.

  • Primeiro, use a classe Apresentação para carregar a apresentação PPT/PPTX.
  • Em seguida, acesse a coleção de imagens na apresentação usando o método Presentation.getImages().
  • Por fim, obtenha o tipo e o formato de cada imagem e salve-a.

O exemplo de código a seguir mostra como extrair imagens de um arquivo PPTX do PowerPoint em Java.

// Carregar a apresentação
Presentation pres = new Presentation("presentation.pptx");

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

// Percorrer as imagens
for (IPPImage image : pres.getImages()) {
  // Obter tipo de imagem
  imageType = image.getContentType();
  imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

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

Extrair imagens de formas em um PPT

Você também pode extrair imagens apenas das formas nos slides PPT. A seguir estão os passos para fazer isso.

  • Primeiro, use a classe Apresentação para carregar o arquivo de apresentação.
  • Em seguida, use o método Presentation.getSlides() para acessar a coleção de slides.
  • Para cada slide, acesse suas formas usando o método ISlide.getShapes().
  • Execute as seguintes etapas para cada forma na coleção:
    • Verifique se a forma é uma forma automática e preenchida com uma imagem e extraia sua imagem usando o método getImage().
    • Verifique se a forma é um porta-retrato e extraia sua imagem usando o método getImage().
    • Por fim, salve a imagem como um arquivo.

O exemplo de código a seguir mostra como extrair imagens de formas em um PPT usando Java.

// Carregar a apresentação
Presentation pres = new Presentation("presentation.pptx");

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

// Percorrer os slides
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Acessar slide
  ISlide sl = pres.getSlides().get_Item(i);

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

    // Verifique se é uma 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;
      }
    }

    // Se a forma é um porta-retrato
    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;
    }

    // Defina o formato de imagem desejado
    if (isImageFound) {
      try {
        ImageIO.write(img.getSystemImage(), imageType,
            new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
      } catch (IOExceção ex) {
        // Exceção
      }
    }
    isImageFound = false;
  }
}

Extrair imagens de fundos de slides em Java

Outro cenário possível poderia ser a extração de imagens que são usadas apenas como plano de fundo de slides. As etapas a seguir mostram como extrair imagens de plano de fundo de slides em Java.

O exemplo de código a seguir mostra como extrair imagens de planos de fundo de slide em um PPT em Java.

// Carregar a apresentação
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++;

  // Acessar slide
  ISlide sl = pres.getSlides().get_Item(i);

  // Verifique se o fundo está preenchido com imagem
  if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
    // Obtenha a imagem de fundo
    backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();

    // Salvar foto
    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) {
      // leia a mensagem de exceção
    }
  } else {
    // verifique se o layout do slide tem plano de fundo da imagem
    if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {

      // Obtenha a imagem de fundo
      backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
          .getImage();

      // Salvar imagem
      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) {
        // leia a mensagem de exceção
      }
    }
  }
}

Obtenha uma licença gratuita

O Aspose oferece uma licença temporária gratuita para usar o Aspose.Slides for Java sem limitações de avaliação. Você pode obter um para si mesmo.

Conclusão

Neste artigo, demonstramos como extrair imagens do PowerPoint PPT/PPTX em Java. Além disso, abordamos como extrair imagens do plano de fundo da forma ou do slide separadamente. Além disso, você pode ler mais sobre o Aspose.Slides for Java visitando a documentação. Além disso, você pode postar suas dúvidas em nosso fórum.

Veja também