Apache POI PPT - Imagens
Neste capítulo, você aprenderá como adicionar uma imagem a um PPT e como ler uma imagem dele.
Adicionando Imagem
Você pode adicionar imagens a uma apresentação usando o createPicture() método de XSLFSlide. Este método aceita imagem na forma de formato de matriz de bytes. Portanto, você deve criar uma matriz de bytes da imagem a ser adicionada à apresentação.
Siga o procedimento fornecido para adicionar uma imagem a uma apresentação. Crie uma apresentação de slides vazia usandoXMLSlideShow como mostrado abaixo -
XMLSlideShow ppt = new XMLSlideShow();
Crie uma apresentação vazia usando createSlide().
XSLFSlide slide = ppt.createSlide();
Leia o arquivo de imagem a ser adicionado e converta-o em uma matriz de bytes usando IOUtils.toByteArray() do IOUtils classe como mostrado abaixo -
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
Adicione a imagem à apresentação usando addPicture(). Este método aceita duas variáveis: formato da matriz de bytes da imagem a ser adicionada e a variável estática que representa o formato do arquivo da imagem. O uso doaddPicture() método é mostrado abaixo -
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
Incorpore a imagem ao slide usando createPicture() como mostrado abaixo -
XSLFPictureShape pic = slide.createPicture(idx);
Abaixo está o programa completo para adicionar uma imagem ao slide em uma apresentação -
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public class AddingImage {
public static void main(String args[]) throws IOException {
//creating a presentation
XMLSlideShow ppt = new XMLSlideShow();
//creating a slide in it
XSLFSlide slide = ppt.createSlide();
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
//adding the image to the presentation
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
//creating a file object
File file = new File("addingimage.pptx");
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
ppt.write(out)
System.out.println("image added successfully");
out.close();
}
}
Salve o código Java acima como AddingImage.javae, em seguida, compile e execute-o no prompt de comando da seguinte maneira -
$javac AddingImage.java
$java AddingImage
Ele irá compilar e executar para gerar a seguinte saída -
reordering of the slides is done
A apresentação com o slide recém-adicionado com imagem aparece da seguinte maneira -
Lendo a imagem
Você pode obter os dados de todas as imagens usando o getAllPictures() método do XMLSlideShowclasse. O programa a seguir lê as imagens de uma apresentação -
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
public class Readingimage {
public static void main(String args[]) throws IOException {
//open an existing presentation
File file = new File("addingimage.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//reading all the pictures in the presentation
for(XSLFPictureData data : ppt.getAllPictures()){
byte[] bytes = data.getData();
String fileName = data.getFileName();
int pictureFormat = data.getPictureType();
System.out.println("picture name: " + fileName);
System.out.println("picture format: " + pictureFormat);
}
//saving the changes to a file
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
out.close();
}
}
Salve o código Java acima como Readingimage.javae, em seguida, compile e execute-o no prompt de comando da seguinte maneira -
$javac Readingimage.java
$java Readingimage
Ele irá compilar e executar para gerar a seguinte saída -
picture name: image1.png
picture format: 6