Apache POI PPT - Gambar

Dalam bab ini, Anda akan belajar cara menambahkan gambar ke PPT dan cara membaca gambar darinya.

Menambahkan Gambar

Anda dapat menambahkan gambar ke presentasi menggunakan createPicture() metode dari XSLFSlide. Metode ini menerima citra dalam bentuk format byte array. Oleh karena itu, Anda harus membuat larik byte dari gambar yang akan ditambahkan ke presentasi.

Ikuti prosedur yang diberikan untuk menambahkan gambar ke presentasi. Buat slideshow kosong menggunakanXMLSlideShow seperti yang ditunjukkan di bawah ini -

XMLSlideShow ppt = new XMLSlideShow();

Buat presentasi kosong di dalamnya menggunakan createSlide().

XSLFSlide slide = ppt.createSlide();

Baca file gambar yang akan ditambahkan dan konversikan menjadi byte array menggunakan IOUtils.toByteArray() dari IOUtils kelas seperti yang ditunjukkan di bawah ini -

//reading an image
File image = new File("C://POIPPT//boy.jpg");

//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));

Tambahkan gambar ke presentasi menggunakan addPicture(). Metode ini menerima dua variabel: format larik byte dari gambar yang akan ditambahkan dan variabel statis yang mewakili format file gambar. Penggunaan fileaddPicture() metode ditunjukkan di bawah ini -

int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);

Sematkan gambar ke slide menggunakan createPicture() seperti yang ditunjukkan di bawah ini -

XSLFPictureShape pic = slide.createPicture(idx);

Diberikan di bawah ini adalah program lengkap untuk menambahkan gambar ke slide dalam presentasi -

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

Simpan kode Java di atas sebagai AddingImage.java, lalu kompilasi dan jalankan dari command prompt sebagai berikut -

$javac AddingImage.java
$java AddingImage

Ini akan mengkompilasi dan mengeksekusi untuk menghasilkan output berikut -

reordering of the slides is done

Presentasi dengan slide yang baru ditambahkan dengan gambar muncul sebagai berikut -

Membaca Gambar

Anda bisa mendapatkan data dari semua gambar menggunakan getAllPictures() metode dari XMLSlideShowkelas. Program berikut membaca gambar dari presentasi -

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

Simpan kode Java di atas sebagai Readingimage.java, lalu kompilasi dan jalankan dari command prompt sebagai berikut -

$javac Readingimage.java
$java Readingimage

Ini akan mengkompilasi dan mengeksekusi untuk menghasilkan output berikut -

picture name: image1.png
picture format: 6