
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
- Extrair imagens de uma apresentação PPT em Java
- Extrair imagens de formas
- Extração de imagem do plano de fundo do slide
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.
Primeiro, carregue a apresentação usando a classe Apresentação.
Em seguida, percorra os slides na apresentação usando o método Presentation.getSlides().
Para cada slide, execute as seguintes etapas:
Verifique se o slide tem uma imagem de fundo usando o método ISlide.getBackground().getFillFormat().getFillType().
Se o fundo tiver imagem, extraia a imagem usando o método getImage().
Verifique se o slide de layout tem imagem de fundo usando o método ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType().
Se o plano de fundo do slide de layout estiver preenchido com uma imagem, extraia-o usando o método getImage().
Por fim, salve a imagem extraída como um arquivo.
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.