В этой главе вы узнаете, как добавить изображение в PPT и как прочитать изображение с него.
Добавление изображения
Вы можете добавить изображения в презентацию, используя метод createPicture () XSLFSlide . Этот метод принимает изображение в виде формата байтового массива. Поэтому вам необходимо создать байтовый массив изображения, который будет добавлен в презентацию.
Следуйте данной процедуре, чтобы добавить изображение в презентацию. Создайте пустое слайд-шоу, используя XMLSlideShow, как показано ниже —
XMLSlideShow ppt = new XMLSlideShow();
Создайте в нем пустую презентацию, используя createSlide () .
XSLFSlide slide = ppt.createSlide();
Прочитайте файл изображения, который нужно добавить, и преобразуйте его в байтовый массив, используя IOUtils.toByteArray () класса IOUtils, как показано ниже —
//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 () показано ниже —
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 , а затем скомпилируйте и выполните его из командной строки следующим образом:
$javac AddingImage.java $java AddingImage
Это скомпилирует и выполнит, чтобы произвести следующий вывод —
reordering of the slides is done
Презентация с новым добавленным слайдом с изображением выглядит следующим образом:
Чтение изображения
Вы можете получить данные обо всех изображениях, используя метод getAllPictures () класса XMLSlideShow . Следующая программа читает изображения из презентации —
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 , а затем скомпилируйте и выполните его из командной строки следующим образом:
$javac Readingimage.java $java Readingimage
Это скомпилирует и выполнит, чтобы произвести следующий вывод —