Apache POI PPT - Bilder

In diesem Kapitel erfahren Sie, wie Sie einem PPT ein Bild hinzufügen und ein Bild daraus lesen.

Bild hinzufügen

Sie können einer Präsentation Bilder hinzufügen, indem Sie die Option verwenden createPicture() Methode von XSLFSlide. Diese Methode akzeptiert Bilder in Form eines Byte-Array-Formats. Daher müssen Sie ein Byte-Array des Bildes erstellen, das der Präsentation hinzugefügt werden soll.

Befolgen Sie die angegebenen Anweisungen, um einer Präsentation ein Bild hinzuzufügen. Erstellen Sie eine leere Diashow mitXMLSlideShow wie unten gezeigt -

XMLSlideShow ppt = new XMLSlideShow();

Erstellen Sie eine leere Präsentation darin mit createSlide().

XSLFSlide slide = ppt.createSlide();

Lesen Sie die hinzuzufügende Bilddatei und konvertieren Sie sie mit in ein Byte-Array IOUtils.toByteArray() des IOUtils Klasse wie unten gezeigt -

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

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

Fügen Sie das Bild mit zur Präsentation hinzu addPicture(). Diese Methode akzeptiert zwei Variablen: das Byte-Array-Format des hinzuzufügenden Bildes und die statische Variable, die das Dateiformat des Bildes darstellt. Die Verwendung deraddPicture() Methode ist unten gezeigt -

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

Betten Sie das Bild mit in die Folie ein createPicture() wie unten gezeigt -

XSLFPictureShape pic = slide.createPicture(idx);

Im Folgenden finden Sie das vollständige Programm zum Hinzufügen eines Bildes zur Folie in einer 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();	
   }
}

Speichern Sie den obigen Java-Code als AddingImage.java, und kompilieren Sie es dann und führen Sie es an der Eingabeaufforderung wie folgt aus:

$javac AddingImage.java
$java AddingImage

Es wird kompiliert und ausgeführt, um die folgende Ausgabe zu generieren:

reordering of the slides is done

Die Präsentation mit der neu hinzugefügten Folie mit Bild sieht wie folgt aus:

Bild lesen

Sie können die Daten aller Bilder mit dem abrufen getAllPictures() Methode der XMLSlideShowKlasse. Das folgende Programm liest die Bilder aus einer 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();	
   }
}

Speichern Sie den obigen Java-Code als Readingimage.java, und kompilieren Sie es dann und führen Sie es an der Eingabeaufforderung wie folgt aus:

$javac Readingimage.java
$java Readingimage

Es wird kompiliert und ausgeführt, um die folgende Ausgabe zu generieren:

picture name: image1.png
picture format: 6