Видобуток зображень із 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 PPT Image Extraction API - Отримайте безкоштовну ліцензію

Aspose пропонує безкоштовну тимчасову ліцензію на видобування зображень із PowerPoint PPT без обмежень оцінки. Ви можете отримати один для себе.

Висновок

У цій статті ми продемонстрували, як видобувати зображення з PowerPoint PPT/PPTX у Java. Крім того, ми розглянули, як окремо витягувати зображення з фігури або фону слайда. Крім того, ви можете прочитати більше про Aspose.Slides for Java, відвідавши документацію. Також ви можете опублікувати свої запити на нашому форумі.

Дивись також