У деяких випадках вам може знадобитися витягти зображення з презентацій 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 PPT Image Extraction API - Отримайте безкоштовну ліцензію
Aspose пропонує безкоштовну тимчасову ліцензію на видобування зображень із PowerPoint PPT без обмежень оцінки. Ви можете отримати один для себе.
Висновок
У цій статті ми продемонстрували, як видобувати зображення з PowerPoint PPT/PPTX у Java. Крім того, ми розглянули, як окремо витягувати зображення з фігури або фону слайда. Крім того, ви можете прочитати більше про Aspose.Slides for Java, відвідавши документацію. Також ви можете опублікувати свої запити на нашому форумі.