Apache POI PPT - Hình ảnh
Trong chương này, bạn sẽ học cách thêm hình ảnh vào PPT và cách đọc hình ảnh từ nó.
Thêm hình ảnh
Bạn có thể thêm hình ảnh vào bản trình bày bằng cách sử dụng createPicture() phương pháp của XSLFSlide. Phương thức này chấp nhận hình ảnh ở dạng định dạng mảng byte. Do đó, bạn phải tạo một mảng byte của hình ảnh sẽ được thêm vào bản trình bày.
Làm theo quy trình đã cho để thêm hình ảnh vào bản trình bày. Tạo một trình chiếu trống bằng cách sử dụngXMLSlideShow như hình dưới đây -
XMLSlideShow ppt = new XMLSlideShow();
Tạo một bản trình bày trống trong đó bằng cách sử dụng createSlide().
XSLFSlide slide = ppt.createSlide();
Đọc tệp hình ảnh sẽ được thêm và chuyển đổi nó thành mảng byte bằng cách sử dụng IOUtils.toByteArray() sau đó IOUtils lớp như hình dưới đây -
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
Thêm hình ảnh vào bản trình bày bằng addPicture(). Phương thức này chấp nhận hai biến: định dạng mảng byte của hình ảnh sẽ được thêm vào và biến tĩnh đại diện cho định dạng tệp của hình ảnh. Việc sử dụngaddPicture() phương pháp được hiển thị bên dưới -
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
Nhúng hình ảnh vào trang chiếu bằng createPicture() như hình dưới đây -
XSLFPictureShape pic = slide.createPicture(idx);
Dưới đây là chương trình hoàn chỉnh để thêm hình ảnh vào trang chiếu trong bản trình bày -
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();
}
}
Lưu mã Java ở trên dưới dạng AddingImage.java, sau đó biên dịch và thực thi nó từ dấu nhắc lệnh như sau:
$javac AddingImage.java
$java AddingImage
Nó sẽ biên dịch và thực thi để tạo ra kết quả sau:
reordering of the slides is done
Bản trình bày với trang chiếu mới được thêm vào với hình ảnh xuất hiện như sau:
Đọc hình ảnh
Bạn có thể lấy dữ liệu của tất cả các hình ảnh bằng cách sử dụng getAllPictures() phương pháp của XMLSlideShowlớp học. Chương trình sau đây đọc các hình ảnh từ một bản trình bày -
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();
}
}
Lưu mã Java ở trên dưới dạng Readingimage.java, sau đó biên dịch và thực thi nó từ dấu nhắc lệnh như sau:
$javac Readingimage.java
$java Readingimage
Nó sẽ biên dịch và thực thi để tạo ra kết quả sau:
picture name: image1.png
picture format: 6