Apache-poi-ppt-images

提供:Dev Guides
移動先:案内検索

Apache POI PPT-画像

この章では、PPTに画像を追加する方法と、PPTから画像を読み取る方法を学習します。

画像を追加する

*XSLFSlide* の* createPicture()*メソッドを使用して、プレゼンテーションに画像を追加できます。 このメソッドは、バイト配列形式の画像を受け入れます。 したがって、プレゼンテーションに追加する画像のバイト配列を作成する必要があります。

指定された手順に従って、プレゼンテーションに画像を追加します。 以下に示すように、 XMLSlideShow を使用して空のスライドショーを作成します-

XMLSlideShow ppt = new XMLSlideShow();
  • createSlide()*を使用して、空のプレゼンテーションを作成します。
XSLFSlide slide = ppt.createSlide();

追加する画像ファイルを読み取り、以下に示すように IOUtils クラスの* IOUtils.toByteArray()*を使用してバイト配列に変換します-

//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()*を使用して、プレゼンテーションに画像を追加します。 このメソッドは、追加されるイメージのバイト配列形式と、イメージのファイル形式を表す静的変数の2つの変数を受け入れます。 * 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

新しく追加された画像付きスライド付きのプレゼンテーションは次のように表示されます-

画像の追加

画像を読む

*XMLSlideShow* クラスの* getAllPictures()*メソッドを使用して、すべての写真のデータを取得できます。 次のプログラムは、プレゼンテーションから画像を読み取ります-
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

次の出力を生成するためにコンパイルおよび実行されます-

picture name: image1.png
picture format: 6