在本章中,您將學(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
更多建議: