Apache POI PPT - Images
Dans ce chapitre, vous apprendrez comment ajouter une image à un PPT et comment en lire une image.
Ajout d'une image
Vous pouvez ajouter des images à une présentation à l'aide du createPicture() méthode de XSLFSlide. Cette méthode accepte l'image sous la forme d'un format de tableau d'octets. Par conséquent, vous devez créer un tableau d'octets de l'image à ajouter à la présentation.
Suivez la procédure indiquée pour ajouter une image à une présentation. Créez un diaporama vide en utilisantXMLSlideShow comme indiqué ci-dessous -
XMLSlideShow ppt = new XMLSlideShow();
Créez-y une présentation vide en utilisant createSlide().
XSLFSlide slide = ppt.createSlide();
Lisez le fichier image à ajouter et convertissez-le en tableau d'octets en utilisant IOUtils.toByteArray() du IOUtils classe comme indiqué ci-dessous -
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
Ajoutez l'image à la présentation en utilisant addPicture(). Cette méthode accepte deux variables: le format de tableau d'octets de l'image à ajouter et la variable statique représentant le format de fichier de l'image. L'utilisation duaddPicture() méthode est montrée ci-dessous -
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
Incorporez l'image à la diapositive en utilisant createPicture() comme indiqué ci-dessous -
XSLFPictureShape pic = slide.createPicture(idx);
Ci-dessous est le programme complet pour ajouter une image à la diapositive dans une présentation -
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();
}
}
Enregistrez le code Java ci-dessus sous AddingImage.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -
$javac AddingImage.java
$java AddingImage
Il se compilera et s'exécutera pour générer la sortie suivante -
reordering of the slides is done
La présentation avec la diapositive nouvellement ajoutée avec l'image apparaît comme suit -
Lecture de l'image
Vous pouvez obtenir les données de toutes les images en utilisant le getAllPictures() méthode de la XMLSlideShowclasse. Le programme suivant lit les images d'une présentation -
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();
}
}
Enregistrez le code Java ci-dessus sous Readingimage.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -
$javac Readingimage.java
$java Readingimage
Il se compilera et s'exécutera pour générer la sortie suivante -
picture name: image1.png
picture format: 6