Apache POI PPT - Immagini
In questo capitolo imparerai come aggiungere un'immagine a un PPT e come leggere un'immagine da esso.
Aggiunta di immagini
Puoi aggiungere immagini a una presentazione utilizzando il file createPicture() metodo di XSLFSlide. Questo metodo accetta immagini sotto forma di formato array di byte. Pertanto, è necessario creare un array di byte dell'immagine che deve essere aggiunto alla presentazione.
Segui la procedura indicata per aggiungere un'immagine a una presentazione. Crea una presentazione vuota usandoXMLSlideShow come mostrato di seguito -
XMLSlideShow ppt = new XMLSlideShow();
Crea una presentazione vuota utilizzando createSlide().
XSLFSlide slide = ppt.createSlide();
Leggere il file immagine che deve essere aggiunto e convertirlo in array di byte utilizzando IOUtils.toByteArray() del IOUtils classe come mostrato di seguito -
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
Aggiungi l'immagine alla presentazione usando addPicture(). Questo metodo accetta due variabili: il formato della matrice di byte dell'immagine da aggiungere e la variabile statica che rappresenta il formato del file dell'immagine. L'utilizzo diaddPicture() metodo è mostrato di seguito -
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
Incorpora l'immagine nella diapositiva usando createPicture() come mostrato di seguito -
XSLFPictureShape pic = slide.createPicture(idx);
Di seguito è riportato il programma completo per aggiungere un'immagine alla diapositiva in una presentazione -
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();
}
}
Salva il codice Java sopra come AddingImage.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:
$javac AddingImage.java
$java AddingImage
Verrà compilato ed eseguito per generare il seguente output:
reordering of the slides is done
La presentazione con la diapositiva appena aggiunta con l'immagine appare come segue:
Immagine di lettura
È possibile ottenere i dati di tutte le immagini utilizzando il file getAllPictures() metodo del XMLSlideShowclasse. Il seguente programma legge le immagini da una presentazione:
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();
}
}
Salva il codice Java sopra come Readingimage.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:
$javac Readingimage.java
$java Readingimage
Verrà compilato ed eseguito per generare il seguente output:
picture name: image1.png
picture format: 6