Apache POI PPT - 图像

在本章中,您将学习如何向 PPT 添加图像以及如何从中读取图像。

添加图像

您可以使用 XSLFSlidecreatePicture() 方法将图像添加到演示文稿中。此方法接受字节数组格式的图像。因此,您必须创建要添加到演示文稿中的图像的字节数组。

按照给定的步骤将图像添加到演示文稿中。使用 XMLSlideShow 创建一个空幻灯片,如下所示 −

XMLSlideShow ppt = new XMLSlideShow();

使用 createSlide() 在其中创建一个空演示文稿。

XSLFSlide slide = ppt.createSlide();

读取要添加的图像文件,并使用 IOUtils 类的 IOUtils.toByteArray() 将其转换为字节数组,如下所示 −

//读取图像
File image = new File("C://POIPPT//boy.jpg");

//将其转换为字节数组
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 {
        //创建演示文稿
        XMLSlideShow ppt = new XMLSlideShow();
        
        //在其中创建幻灯片
        XSLFSlide slide = ppt.createSlide();
        
        //读取图像
        File image = new File("C://POIPPT//boy.jpg");
        
        //将其转换为字节数组
        byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
        
        //将图像添加到演示文稿
        XSLFPictureData idx = ppt.addPicture(picture, PictureType.PNG);
        
        //创建带有给定图片的幻灯片
        XSLFPictureShape pic = slide.createPicture(idx);
        
        //创建文件对象
        File file = new File("addingimage.pptx");
        FileOutputStream out = new FileOutputStream(file);
        
        //将更改保存到文件
        ppt.write(out);
        System.out.println("图片添加成功");
        out.close();
   }
}

将上述 Java 代码保存为 AddingImage.java,然后从命令提示符编译并执行它,如下所示 −

$javac AddingImage.java
$java AddingImage

它将编译并执行以生成以下输出 −

幻灯片的重新排序已完成

包含新添加的带图像幻灯片的演示文稿如下所示 −

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 {
        //打开现有演示文稿
        File file = new File("addingimage.pptx");
        XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
        
        //读取演示文稿中的所有图片
        for(XSLFPictureData data : ppt.getPictureData()){
            byte[] bytes = data.getData();
            String fileName = data.getFileName();
            PictureType pictureFormat = data.getType();
            System.out.println("图片名称:" + fileName);
            System.out.println("图片格式:" + pictureFormat);
        }
        //将更改保存到文件
        FileOutputStream out = new FileOutputStream(file);
        ppt.write(out);
        out.close();
   }
}

将上述 Java 代码保存为 Readingimage.java,然后从命令提示符中编译并执行,如下所示 −

$javac Readingimage.java
$java Readingimage

它将编译并执行以生成以下输出 −

图片名称:image1.png
图片格式:6