Apache POI PPT - 圖片



本章將學習如何在PPT中新增圖片以及如何從中讀取圖片。

新增圖片

您可以使用XSLFSlidecreatePicture()方法將圖片新增到簡報。此方法接受位元組陣列格式的圖片。因此,您必須建立要新增到簡報的圖片的位元組陣列。

按照以下步驟將圖片新增到簡報。使用XMLSlideShow建立一個空幻燈片放映,如下所示:

XMLSlideShow ppt = new XMLSlideShow();

使用createSlide()在其中建立一個空的簡報。

XSLFSlide slide = ppt.createSlide();

讀取要新增的圖片檔案,並使用IOUtils類的IOUtils.toByteArray()將其轉換為位元組陣列,如下所示:

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

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

使用addPicture()將圖片新增到簡報。此方法接受兩個變數:要新增的圖片的位元組陣列格式和表示圖片檔案格式的靜態變數。addPicture()方法的用法如下所示:

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

使用createPicture()將圖片嵌入幻燈片,如下所示:

XSLFPictureShape pic = slide.createPicture(idx);

下面是將圖片新增到簡報幻燈片的完整程式:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.sl.usermodel.PictureData.PictureType;
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
      XSLFPictureData idx = ppt.addPicture(picture, PictureType.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();	
   }
}

將上述Java程式碼儲存為AddingImage.java,然後從命令提示符編譯並執行它,如下所示:

$javac AddingImage.java
$java AddingImage

它將編譯並執行以生成以下輸出:

reordering of the slides is done

包含新新增的帶圖片幻燈片的簡報如下所示:

Adding Image

讀取圖片

您可以使用XMLSlideShow類的getPictureData()方法獲取所有圖片的資料。以下程式從簡報中讀取圖片:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.sl.usermodel.PictureData.PictureType;
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.getPictureData()){
         byte[] bytes = data.getData();
         String fileName = data.getFileName();
         PictureType pictureFormat = data.getType();
         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();	
   }
}

將上述Java程式碼儲存為Readingimage.java,然後從命令提示符編譯並執行它,如下所示:

$javac Readingimage.java
$java Readingimage

它將編譯並執行以生成以下輸出:

picture name: image1.png
picture format: 6 
廣告