แยกรูปภาพจาก PowerPoint PPT ใน Java

ในบางกรณี คุณอาจต้องแยกรูปภาพออกจากงานนำเสนอ PowerPoint พร้อมกับข้อความ เพื่อให้บรรลุเป้าหมายดังกล่าว บทความนี้ครอบคลุมวิธีการแยกรูปภาพจาก PowerPoint PPT หรือ PPTX ทางโปรแกรมใน Java คุณจะได้เรียนรู้วิธีแยกรูปภาพออกจากพื้นหลังหรือรูปร่างในสไลด์ 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 ได้โดยไปที่ เอกสารประกอบ นอกจากนี้ คุณสามารถโพสต์คำถามของคุณไปที่ ฟอรัม ของเรา

ดูสิ่งนี้ด้วย