Apache POI PPT - 圖片

2018-12-27 15:45 更新

在本章中,您將學(xué)習(xí)如何將圖像添加到PPT以及如何從中讀取圖像。

添加圖像

您可以使用 XSLFSlide createPicture()方法將圖片添加到演示文稿。 此方法接受以字節(jié)數(shù)組格式形式的圖像。 因此,您必須創(chuàng)建要添加到演示文稿的圖像的字節(jié)數(shù)組。

按照給定的過程向演示文稿添加圖像。 使用 XMLSlideShow 創(chuàng)建空白幻燈片,如下所示:

XMLSlideShow ppt = new XMLSlideShow();

使用 createSlide()創(chuàng)建一個空的演示文稿。

XSLFSlide slide = ppt.createSlide();

使用 IOUtils 類的 IOUtils.toByteArray()讀取要添加的圖像文件并將其轉(zhuǎn)換為字節(jié)數(shù)組,如下所示:

//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()將圖片添加到演示文稿。 此方法接受兩個變量:要添加的圖像的字節(jié)數(shù)組格式和表示圖像的文件格式的靜態(tài)變量。 addPicture()方法的用法如下所示:

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

將上述Java代碼保存為 AddingImage.java ,然后從命令提示符處編譯并執(zhí)行,如下所示:

$javac AddingImage.java
$java AddingImage

它將編譯并執(zhí)行以生成以下輸出:

reordering of the slides is done

帶有新添加的帶有圖像的幻燈片的演示文稿如下所示:

閱讀圖像

您可以使用 XMLSlideShow 類的 getAllPictures()方法獲取所有圖片的數(shù)據(jù)。 以下程序從演示文稿讀取圖像:

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

將上述Java代碼保存為 Readingimage.java ,然后從命令提示符處編譯并執(zhí)行,如下所示:

$javac Readingimage.java
$java Readingimage

它將編譯并執(zhí)行以生成以下輸出:

picture name: image1.png
picture format: 6 

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號