Извлечение изображений из презентаций PowerPoint в Python

Изображения — это эффективный способ коммуникации, который оживляет контент. По этой причине изображения широко используются на веб-страницах, в документах, презентациях и т. д. Презентации MS PowerPoint обычно состоят из меньшего количества текста и большего количества графических объектов и изображений. Поэтому при программной обработке презентаций может потребоваться извлечение изображений вместе с текстом. Для этого в этой статье рассказывается, как извлекать изображения из презентаций PPT или PPTX в Python.

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

Для извлечения изображений из презентаций PowerPoint мы будем использовать Aspose.Slides для 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
# load presentation
with slides.Presentation("presentation.pptx") as pres:

    # loop through images
    for image in pres.images:
        file_name = "Image_{0}.{1}"
        image_type = image.content_type.split("/")[1]
        image_format = get_image_format(image_type)

        # save image
        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

# load presentation
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # loop through slides
    for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # loop through shapes in slide
        for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # check is shape is an auto shape or picture frame
            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

            # save 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

# load presentation
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # loop through the slides in presentation
    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

        # check if the slide's and layout slide's backgrounds are filled with picture
        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

        # save image
        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 для Python, посетив документацию. Также вы можете задать свои вопросы на нашем форуме.

Смотрите также

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