ในบางกรณี คุณอาจต้องแยกรูปภาพออกจากงานนำเสนอ PowerPoint พร้อมกับข้อความ เพื่อให้บรรลุเป้าหมายดังกล่าว บทความนี้ครอบคลุมวิธีการแยกรูปภาพจาก PowerPoint PPT หรือ PPTX ทางโปรแกรมใน Java คุณจะได้เรียนรู้วิธีแยกรูปภาพออกจากพื้นหลังหรือรูปร่างในสไลด์ PPT เท่านั้น
- Java API เพื่อแยกรูปภาพจาก PowerPoint PPT
- แยกรูปภาพจาก PPT ใน Java
- แยกรูปภาพออกจากรูปร่างใน PPTX
- การดึงภาพจากพื้นหลังสไลด์ PPT
Java API เพื่อแยกรูปภาพจาก PowerPoint PPT
Aspose.Slides for Java เป็น API ที่ได้รับความนิยมและมีคุณลักษณะมากมาย ซึ่งช่วยให้คุณสร้างและจัดการงานนำเสนอ PowerPoint ได้อย่างราบรื่น เราจะใช้ API นี้เพื่อแยกรูปภาพจากไฟล์ PPT/PPTX คุณสามารถ ดาวน์โหลด JAR ของ API หรือติดตั้งโดยใช้การกำหนดค่า Maven ต่อไปนี้
พื้นที่เก็บข้อมูล:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
การพึ่งพา:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-slides</artifactId>
<version>22.1</version>
<classifier>jdk16</classifier>
</dependency>
แยกรูปภาพจาก PowerPoint PPT ใน Java
ในงานนำเสนอ PowerPoint รูปภาพทั้งหมดที่ใช้ในสไลด์จะถูกจัดเก็บไว้ในคอลเลกชันรูปภาพ สามารถเข้าถึงคอลเลกชันนี้และแต่ละภาพสามารถบันทึกเป็นไฟล์ได้ ต่อไปนี้เป็นขั้นตอนในการแยกรูปภาพทั้งหมดในงานนำเสนอ PPT ใน Java
- ขั้นแรก ใช้คลาส Presentation เพื่อโหลดงานนำเสนอ PPT/PPTX
- จากนั้น เข้าถึงคอลเลกชันรูปภาพในงานนำเสนอโดยใช้เมธอด Presentation.getImages()
- สุดท้าย รับประเภทและรูปแบบของแต่ละภาพและบันทึก
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกรูปภาพจากไฟล์ PowerPoint PPTX ใน Java
// โหลดงานนำเสนอ
Presentation pres = new Presentation("presentation.pptx");
int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";
// วนซ้ำภาพ
for (IPPImage image : pres.getImages()) {
// รับประเภทรูปภาพ
imageType = image.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
// บันทึกภาพ
try {
ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
imageIndex++;
}
แยกรูปภาพจากรูปร่าง PPTX ใน Java
คุณยังสามารถแยกรูปภาพจากรูปร่างในสไลด์ PPT เท่านั้น ต่อไปนี้เป็นขั้นตอนในการทำให้สำเร็จ
- ขั้นแรก ใช้คลาส Presentation เพื่อโหลดไฟล์งานนำเสนอ
- จากนั้น ใช้เมธอด Presentation.getSlides() เพื่อเข้าถึงคอลเลกชันสไลด์
- สำหรับแต่ละสไลด์ ให้เข้าถึงรูปร่างโดยใช้เมธอด ISlide.getShapes()
- ทำตามขั้นตอนต่อไปนี้สำหรับแต่ละรูปร่างในคอลเลกชัน:
- ตรวจสอบว่ารูปร่างเป็นรูปร่างอัตโนมัติและเติมรูปภาพหรือไม่ จากนั้นแยกรูปภาพโดยใช้เมธอด getImage()
- ตรวจสอบว่ารูปร่างเป็นกรอบรูปหรือไม่ จากนั้นแตกรูปภาพโดยใช้เมธอด getImage()
- สุดท้ายบันทึกภาพเป็นไฟล์
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกรูปภาพออกจากรูปร่างใน PPT โดยใช้ Java
// โหลดงานนำเสนอ
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;
// วนซ้ำผ่านสไลด์
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// เข้าถึงสไลด์
ISlide sl = pres.getSlides().get_Item(i);
for (int j = 0; j < sl.getShapes().size(); j++) {
// เข้าถึงรูปร่าง
IShape sh = sl.getShapes().get_Item(j);
// ตรวจสอบว่าเป็นรูปอัตโนมัติหรือไม่
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;
}
}
// ถ้ารูปร่างเป็นกรอบรูป
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;
}
// กำหนดรูปแบบภาพที่ต้องการ
if (isImageFound) {
try {
ImageIO.write(img.getSystemImage(), imageType,
new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
} catch (IOข้อยกเว้น ex) {
// ข้อยกเว้น
}
}
isImageFound = false;
}
}
การสกัดรูปภาพ Java จากพื้นหลังสไลด์ PPT
อีกสถานการณ์หนึ่งที่เป็นไปได้อาจเป็นการแยกรูปภาพที่ใช้เป็นพื้นหลังสไลด์เท่านั้น ขั้นตอนต่อไปนี้แสดงวิธีการแยกภาพพื้นหลังของสไลด์ใน Java
ขั้นแรก โหลดงานนำเสนอโดยใช้คลาส Presentation
จากนั้น วนซ้ำสไลด์ในงานนำเสนอโดยใช้เมธอด Presentation.getSlides()
สำหรับแต่ละสไลด์ ให้ทำตามขั้นตอนต่อไปนี้:
ตรวจสอบว่าสไลด์มีภาพพื้นหลังหรือไม่โดยใช้เมธอด ISlide.getBackground().getFillFormat().getFillType()
หากพื้นหลังมีรูปภาพ ให้แยกรูปภาพโดยใช้เมธอด getImage()
ตรวจสอบว่าสไลด์เค้าโครงมีภาพพื้นหลังโดยใช้เมธอด ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType()
หากพื้นหลังของสไลด์เลย์เอาต์เต็มไปด้วยรูปภาพ ให้แตกไฟล์โดยใช้เมธอด getImage()
สุดท้าย บันทึกภาพที่แยกออกมาเป็นไฟล์
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการแยกรูปภาพจากพื้นหลังสไลด์ใน PPT ใน Java
// โหลดงานนำเสนอ
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++;
// เข้าถึงสไลด์
ISlide sl = pres.getSlides().get_Item(i);
// ตรวจสอบว่าพื้นหลังเต็มไปด้วยรูปภาพหรือไม่
if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
// รับภาพพื้นหลัง
backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();
// บันทึกภาพ
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) {
// อ่านข้อความแสดงข้อยกเว้น
}
} else {
// ตรวจสอบว่าเค้าโครงสไลด์มีพื้นหลังรูปภาพหรือไม่
if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {
// รับภาพพื้นหลัง
backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
.getImage();
// บันทึกภาพ
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) {
// อ่านข้อความแสดงข้อยกเว้น
}
}
}
}
Java PowerPoint Image Extraction API - รับใบอนุญาตฟรี
Aspose เสนอใบอนุญาตชั่วคราวฟรีเพื่อใช้ Aspose.Slides for Java โดยไม่มีข้อจำกัดในการประเมิน คุณสามารถ ซื้อด้วยตัวคุณเอง
บทสรุป
ในบทความนี้ เราได้สาธิตวิธีแยกรูปภาพจาก PowerPoint PPT/PPTX ใน Java นอกจากนี้ เราได้กล่าวถึงวิธีการแยกรูปภาพออกจากรูปร่างหรือพื้นหลังสไลด์แยกกัน นอกจากนี้ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ Aspose.Slides for Java ได้โดยไปที่ เอกสารประกอบ นอกจากนี้ คุณสามารถโพสต์คำถามของคุณไปที่ ฟอรัม ของเรา