Trích xuất hình ảnh từ PowerPoint PPT trong Java

Trong một số trường hợp nhất định, bạn có thể cần trích xuất hình ảnh từ bản trình bày PowerPoint cùng với văn bản. Để đạt được điều đó, bài viết này trình bày cách trích xuất hình ảnh từ PowerPoint PPT hoặc PPTX theo lập trình trong Java. Bạn cũng sẽ học cách chỉ trích xuất hình ảnh từ nền hoặc hình dạng trong các trang trình bày PPT.

API Java để trích xuất hình ảnh từ PowerPoint PPT

Aspose.Slides dành cho Java là một API phổ biến và giàu tính năng cho phép bạn tạo và thao tác các bản trình bày PowerPoint một cách liền mạch. Chúng tôi sẽ sử dụng API này để trích xuất hình ảnh từ tệp PPT / PPTX. Bạn có thể tải xuống API của JAR hoặc cài đặt nó bằng cách sử dụng các cấu hình Maven sau.

Kho:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Sự phụ thuộc:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-slides</artifactId>
    <version>22.1</version>
    <classifier>jdk16</classifier>
</dependency>

Trích xuất hình ảnh từ PowerPoint PPT trong Java

Trong bản trình bày PowerPoint, tất cả hình ảnh được sử dụng trong các trang chiếu được lưu trữ trong một bộ sưu tập hình ảnh. Bộ sưu tập này có thể được truy cập và mỗi hình ảnh có thể được lưu dưới dạng tệp. Sau đây là các bước để trích xuất tất cả các hình ảnh trong bản trình bày PPT bằng Java.

  • Đầu tiên, sử dụng lớp Trình bày để tải bản trình bày PPT / PPTX.
  • Sau đó, truy cập bộ sưu tập hình ảnh trong bản trình bày bằng phương thức Presentation.getImages().
  • Cuối cùng, lấy loại và định dạng của từng hình ảnh và lưu nó.

Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ tệp PowerPoint PPTX trong Java.

// Tải bản trình bày
Presentation pres = new Presentation("presentation.pptx");

int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";

// Lặp qua các hình ảnh
for (IPPImage image : pres.getImages()) {
  // Nhận loại hình ảnh
  imageType = image.getContentType();
  imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

  // Lưu hình ảnh
  try {
    ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
  } catch (IOException ex) {
    System.out.println(ex.getMessage());
  }
  imageIndex++;
}

Trích xuất hình ảnh từ PPTX Shapes trong Java

Bạn cũng có thể trích xuất hình ảnh chỉ từ các hình dạng trong các trang trình bày PPT. Sau đây là các bước để thực hiện điều đó.

  • Đầu tiên, sử dụng lớp Trình bày để tải tệp bản trình bày.
  • Sau đó, sử dụng phương thức Presentation.getSlides() để truy cập bộ sưu tập trang trình bày.
  • Đối với mỗi trang chiếu, hãy truy cập các hình dạng của nó bằng phương thức ISlide.getShapes().
  • Thực hiện các bước sau cho mỗi hình dạng trong bộ sưu tập:
    • Kiểm tra xem hình dạng có phải là hình tự động và được lấp đầy bởi một hình ảnh hay không, sau đó trích xuất hình ảnh của nó bằng phương thức getImage().
    • Kiểm tra xem hình dạng có phải là khung ảnh hay không sau đó trích xuất hình ảnh của nó bằng phương thức getImage().
    • Cuối cùng, lưu hình ảnh dưới dạng tệp.

Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ các hình dạng trong PPT bằng Java.

// Tải bản trình bày
Presentation pres = new Presentation("presentation.pptx");

com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;

// Lặp qua các trang trình bày
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Truy cập trang trình bày
  ISlide sl = pres.getSlides().get_Item(i);

 for (int j = 0; j < sl.getShapes().size(); j++) {
    // Truy cập hình dạng
    IShape sh = sl.getShapes().get_Item(j);

    // Kiểm tra xem nó có phải là hình dạng tự động không
    if (sh instanceof IAutoShape) {
      IAutoShape ashp = (IAutoShape) sh;
      if (ashp.getFillFormat().getFillType() == FillType.Picture) {
        img = ashp.getFillFormat().getPictureFillFormat().getPicture().getImage();
        imageType = img.getContentType();
        imageType = imageType.substring(0, imageType.indexOf("/") + 1);
        isImageFound = true;
      }
    }

    // Nếu hình dạng là một khung ảnh
    else if (sh instanceof IPictureFrame) {
      IPictureFrame pf = (IPictureFrame) sh;
      img = pf.getPictureFormat().getPicture().getImage();
      imageType = img.getContentType();
      imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
      isImageFound = true;
    }

    // Đặt định dạng hình ảnh mong muốn
    if (isImageFound) {
      try {
        ImageIO.write(img.getSystemImage(), imageType,
            new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
      } catch (IONgoại lệ ex) {
        // Ngoại lệ
      }
    }
    isImageFound = false;
  }
}

Trích xuất hình ảnh Java từ Nền trang trình bày PPT

Một tình huống có thể xảy ra khác có thể là trích xuất hình ảnh chỉ được sử dụng làm hình nền trang chiếu. Các bước sau đây trình bày cách trích xuất hình nền trang chiếu trong Java.

Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ nền trang trình bày trong PPT trong Java.

// Tải bản trình bày
Presentation pres = new Presentation("presentation.pptx");

com.aspose.slides.IPPImage img = null;
com.aspose.slides.IPPImage backImage = null;

String ImagePath = "BackImage_";
int slideIndex = 0;
String imageType = "";
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Truy cập trang trình bày
  ISlide sl = pres.getSlides().get_Item(i);

  // Kiểm tra xem nền có lấp đầy hình ảnh không
  if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
    // Lấy hình nền
    backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();

    // Lưu hình ảnh
    BufferedImage image = backImage.getSystemImage();
    imageType = backImage.getContentType();
    imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

    try {
      ImageIO.write(image, imageType,
          new File(ImagePath + "Slide_" + slideIndex + "." + imageType.toString()));
    } catch (IOException ex) {
      // đọc tin nhắn ngoại lệ
    }
  } else {
    // kiểm tra xem bố cục trang chiếu có nền hình ảnh không
    if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {

      // Lấy hình nền
      backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
          .getImage();

      // Lưu hình ảnh
      BufferedImage image = backImage.getSystemImage();
      imageType = backImage.getContentType();
      imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

      try {
        ImageIO.write(image, imageType,
            new File(ImagePath + "LayoutSlide_" + slideIndex + "." + imageType.toString()));
      } catch (IOException ex) {
        // đọc tin nhắn ngoại lệ
      }
    }
  }
}

API trích xuất hình ảnh Java PowerPoint - Nhận giấy phép miễn phí

Aspose cung cấp giấy phép tạm thời miễn phí để sử dụng Aspose.Slides for Java mà không có giới hạn đánh giá. Bạn có thể lấy cho mình một cái.

Sự kết luận

Trong bài viết này, chúng tôi đã trình bày cách trích xuất hình ảnh từ PowerPoint PPT / PPTX trong Java. Ngoài ra, chúng tôi đã đề cập đến cách trích xuất hình ảnh từ hình dạng hoặc hình nền trang trình bày riêng biệt. Ngoài ra, bạn có thể đọc thêm về Aspose.Slides for Java bằng cách truy cập tài liệu. Ngoài ra, bạn có thể đăng các truy vấn của mình lên diễn đàn của chúng tôi.

Xem thêm