Витягуйте зображення з презентацій PowerPoint на Python

Зображення є ефективним способом комунікації, який робить вміст живим. Це причина, чому зображення широко застосовуються на веб-сторінках, документах, презентаціях тощо. Презентації MS PowerPoint зазвичай створюються з меншою кількістю тексту та більшою кількістю графічних об’єктів і зображень. Тому під час програмної обробки презентацій вам може знадобитися витягувати зображення разом із текстом. Щоб досягти цього, у цій статті описано, як видобувати зображення з презентацій PPT або PPTX у Python.

Бібліотека Python для вилучення зображень із презентацій

Щоб отримати зображення з презентацій PowerPoint, ми будемо використовувати Aspose.Slides for Python через .NET. Це потужна бібліотека Python, призначена для створення презентацій з нуля. Крім того, це дозволяє легко конвертувати та маніпулювати існуючими презентаціями. Ви можете встановити його з PyPI за допомогою такої команди pip.

> pip install aspose.slides

Видобувайте зображення з PowerPoint PPT у Python

Нижче наведено кроки для отримання зображень із презентації PowerPoint у Python.

  • Завантажте презентацію за допомогою класу Presentation.
  • Переглядайте зображення в презентації за допомогою колекції Presentation.images.
  • Збережіть кожне зображення як файл.

У наведеному нижче прикладі коду показано, як видобувати зображення з файлу PPTX у Python.

import aspose.slides as slides
import aspose.pydrawing as drawing

imageIndex=1
# завантажити презентацію
with slides.Presentation("presentation.pptx") as pres:

    # переглядати зображення
   for image in pres.images:
        file_name = "Image_{0}.{1}"
        image_type = image.content_type.split("/")[1]
        image_format = get_image_format(image_type)

        # зберегти зображення
        image.system_image.save(file_name.format( imageIndex, image_type), image_format)
        imageIndex = imageIndex + 1

Вилучення зображень із фігур у PPT

У деяких випадках вам може знадобитися видобувати зображення лише з фігур у презентації. Отже, давайте подивимося, як витягувати зображення з фігур у PPT у Python.

  • Спочатку завантажте презентацію за допомогою класу Presentation.
  • Потім перегляньте слайди презентації за допомогою колекції Presentation.slides.
  • Для кожного слайда отримуйте доступ до його форм за допомогою колекції ISlide.shapes.
  • Для кожної форми в колекції виконайте такі кроки:
    • Якщо форма є автоматичною формою, а її тип заливки – зображення, витягніть зображення за допомогою властивості IShape.fillformat.picturefillformat.picture.image.
    • Якщо форма є рамкою для зображення, витягніть зображення за допомогою властивості IShape.pictureformat.picture.image.
    • Нарешті, збережіть зображення як файл.

У наведеному нижче прикладі коду показано, як видобувати зображення з фігур у презентації PPT за допомогою Python.

import aspose.slides as slides
import aspose.pydrawing as drawing

# завантажити презентацію
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # переглядати слайди
   for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # проходити фігури на слайді
       for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # перевірте, чи форма є автоматичною формою або рамкою для зображення
            if type(shape) is slides.AutoShape and shape.fill_format.fill_type == slides.FillType.PICTURE:
                shape_image = shape.fill_format.picture_fill_format.picture.image
            elif type(shape) is slides.PictureFrame:
                shape_image = shape.picture_format.picture.image

            # зберегти зображення
            if shape_image is not None:
                image_type = shape_image.content_type.split("/")[1]
                image_format = get_image_format(image_type)

                shape_image.system_image.save(
                                file_name.format("shape_"+str(i)+"_", slideIndex, image_type), 
                                image_format)

Витягніть зображення з фону слайда в PPT

Іншим сценарієм може бути вилучення зображень, які використовуються як фон слайда. Нижче наведено кроки для вилучення зображень лише з фону слайдів у презентації PPT.

  • Спочатку завантажте презентацію за допомогою класу Presentation.
  • Потім перегляньте слайди презентації за допомогою колекції Presentation.slides.
  • Для кожного слайда виконайте такі дії:
    • Перевірте, чи має слайд фонове зображення, використовуючи властивість ISlide.background.fillformat.filltype.
    • Якщо фон містить зображення, витягніть зображення за допомогою властивості ISlide.background.fillformat.picturefillformat.picture.image.
    • Перевірте, чи макет слайда має фонове зображення, використовуючи властивість ISlide.layoutslide.background.fillformat.filltype.
    • Якщо фон заповнений зображенням, витягніть його за допомогою властивості ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Нарешті, збережіть видобуте зображення як файл.

У наведеному нижче прикладі коду показано, як видобувати зображення з фону слайда в PPT на Python.

import aspose.slides as slides
import aspose.pydrawing as drawing

# завантажити презентацію
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # переглядати слайди презентації
   for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        back_image = None
        file_name = "BackImage_Slide_{0}{1}.{2}"
        is_layout = False

        # перевірте, чи фон слайда та макета слайда заповнені зображенням
        if slide.background.fill_format.fill_type == slides.FillType.PICTURE:
            back_image = slide.background.fill_format.picture_fill_format.picture.image
        elif slide.layout_slide.background.fill_format.fill_type == slides.FillType.PICTURE:
            back_image = slide.layout_slide.background.fill_format.picture_fill_format.picture.image
            is_layout = True

        # зберегти зображення
        if back_image is not None:
            image_type = back_image.content_type.split("/")[1]
            image_format = get_image_format(image_type)

            back_image.system_image.save(
                file_name.format("LayoutSlide_" if is_layout else "", slideIndex, image_type), 
                image_format)

Обидва наведені вище приклади коду використовують метод getimageformat, який повертає відповідний формат зображення для наданого типу. Реалізація цього методу представлена нижче.

import aspose.slides as slides
import aspose.pydrawing as drawing

def get_image_format(image_type):
    return {
        "jpeg": drawing.imaging.ImageFormat.jpeg,
        "emf": drawing.imaging.ImageFormat.emf,
        "bmp": drawing.imaging.ImageFormat.bmp,
        "png": drawing.imaging.ImageFormat.png,
        "wmf": drawing.imaging.ImageFormat.wmf,
        "gif": drawing.imaging.ImageFormat.gif,
    }.get(image_type, drawing.imaging.ImageFormat.jpeg)

Отримайте безкоштовну ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію на використання Aspose.Slides for Python через .NET без обмежень оцінювання.

Висновок

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

Дивись також

Інформація: Aspose надає конвертери PowerPoint у зображення — PPT у JPG і [PPT у PNG][] — які дозволяють створювати зображення на основі слайдів у презентації.