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