Учебники

Apache POI PPT — Изображения

В этой главе вы узнаете, как добавить изображение в 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

Это скомпилирует и выполнит, чтобы произвести следующий вывод —