
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
- Trích xuất hình ảnh từ PPT trong Java
- Trích xuất hình ảnh từ hình dạng trong PPTX
- Trích xuất hình ảnh từ nền 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.
Đầu tiên, tải bản trình bày bằng lớp Trình bày.
Sau đó, lặp qua các trang trình bày trong bản trình bày bằng phương thức Presentation.getSlides().
Đối với mỗi trang trình bày, hãy thực hiện các bước sau:
Kiểm tra xem trang chiếu có hình nền hay không bằng cách sử dụng phương thức ISlide.getBackground(). GetFillFormat(). GetFillType().
Nếu nền có hình ảnh thì trích xuất hình ảnh bằng phương thức getImage().
Kiểm tra xem trang chiếu bố cục có hình nền hay không bằng cách sử dụng phương thức ISlide.getLayoutSlide(). GetBackground(). GetFillFormat(). GetFillType().
Nếu nền của trang trình bày bố cục chứa đầy ảnh thì hãy giải nén nó bằng phương thức getImage().
Cuối cùng, lưu hình ảnh đã trích xuất dưới dạng tệp.
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.