Apache POI PPT - Imágenes

En este capítulo, aprenderá cómo agregar una imagen a un PPT y cómo leer una imagen de él.

Agregar imagen

Puede agregar imágenes a una presentación usando el createPicture() método de XSLFSlide. Este método acepta imágenes en forma de formato de matriz de bytes. Por lo tanto, debe crear una matriz de bytes de la imagen que se agregará a la presentación.

Siga el procedimiento dado para agregar una imagen a una presentación. Crea una presentación de diapositivas vacía usandoXMLSlideShow como se muestra a continuación -

XMLSlideShow ppt = new XMLSlideShow();

Crea una presentación vacía usando createSlide().

XSLFSlide slide = ppt.createSlide();

Lea el archivo de imagen que se agregará y conviértalo en una matriz de bytes usando IOUtils.toByteArray() del IOUtils clase como se muestra a continuación -

//reading an image
File image = new File("C://POIPPT//boy.jpg");

//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));

Agregue la imagen a la presentación usando addPicture(). Este método acepta dos variables: formato de matriz de bytes de la imagen que se agregará y la variable estática que representa el formato de archivo de la imagen. El uso de laaddPicture() El método se muestra a continuación:

int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);

Inserte la imagen en la diapositiva usando createPicture() como se muestra a continuación -

XSLFPictureShape pic = slide.createPicture(idx);

A continuación se muestra el programa completo para agregar una imagen a la diapositiva en una presentación:

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();	
   }
}

Guarde el código Java anterior como AddingImage.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac AddingImage.java
$java AddingImage

Se compilará y ejecutará para generar la siguiente salida:

reordering of the slides is done

La presentación con la diapositiva recién agregada con imagen aparece de la siguiente manera:

Leer imagen

Puede obtener los datos de todas las imágenes utilizando el getAllPictures() método del XMLSlideShowclase. El siguiente programa lee las imágenes de una presentación:

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();	
   }
}

Guarde el código Java anterior como Readingimage.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac Readingimage.java
$java Readingimage

Se compilará y ejecutará para generar la siguiente salida:

picture name: image1.png
picture format: 6