Trích xuất hình ảnh từ bản trình bày PowerPoint bằng Python

Hình ảnh là cách truyền thông hiệu quả giúp nội dung trở nên sinh động. Đây là lý do tại sao hình ảnh được sử dụng rộng rãi trong các trang web, tài liệu, bản trình bày, v.v. Bản trình bày MS PowerPoint thường được xây dựng với ít văn bản hơn và nhiều đối tượng đồ họa và hình ảnh hơn. Do đó, khi xử lý các bản trình bày theo chương trình, bạn có thể cần trích xuất hình ảnh cùng với văn bản. Để thực hiện điều đó, bài viết này trình bày cách trích xuất hình ảnh từ các bản trình bày PPT hoặc PPTX bằng Python.

Thư viện Python để trích xuất hình ảnh từ bản trình bày

Để trích xuất hình ảnh từ bản trình bày PowerPoint, chúng tôi sẽ sử dụng Aspose.Slides for Python qua .NET. Đây là một thư viện Python mạnh mẽ được thiết kế để tạo bản trình bày từ đầu. Hơn nữa, nó cho phép bạn chuyển đổi và thao tác liền mạch với các bài thuyết trình hiện có. Bạn có thể cài đặt nó từ PyPI bằng lệnh pip sau.

> pip install aspose.slides

Trích xuất hình ảnh từ PowerPoint PPT bằng Python

Sau đây là các bước để trích xuất hình ảnh từ bản trình bày PowerPoint bằng Python.

  • Tải bản trình bày bằng lớp Trình bày.
  • Lặp lại các hình ảnh trong bản trình bày bằng bộ sưu tập Presentation.images.
  • Lưu từng hình ảnh dưới dạng tệp.

Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ tệp PPTX bằng Python.

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

imageIndex=1
# tải bản trình bày
with slides.Presentation("presentation.pptx") as pres:

    # lặp qua hình ảnh
   for image in pres.images:
        file_name = "Image_{0}.{1}"
        image_type = image.content_type.split("/")[1]
        image_format = get_image_format(image_type)

        # lưu hình ảnh
        image.system_image.save(file_name.format( imageIndex, image_type), image_format)
        imageIndex = imageIndex + 1

Trích xuất hình ảnh từ hình dạng trong một PPT

Trong một số trường hợp nhất định, bạn có thể chỉ cần trích xuất hình ảnh từ các hình dạng trong bản trình bày. Vì vậy, chúng ta hãy xem cách trích xuất hình ảnh từ các hình dạng trong PPT bằng Python.

  • Đầu tiên, tải bản trình bày bằng lớp Trình bày.
  • Sau đó, lặp qua các trang trình bày bằng bộ sưu tập Presentation.slides.
  • Đối với mỗi trang trình bày, hãy truy cập các hình dạng của nó bằng bộ sưu tập ISlide.shapes.
  • Đối với mỗi hình dạng trong bộ sưu tập, hãy thực hiện các bước sau:
    • Nếu hình dạng là một hình dạng tự động và kiểu tô của nó là hình ảnh thì hãy trích xuất hình ảnh bằng cách sử dụng thuộc tính IShape.fillformat.picturefillformat.picture.image.
    • Nếu hình dạng là một khung ảnh thì trích xuất hình ảnh bằng thuộc tính IShape.pictureformat.picture.image.
    • Cuối cùng, lưu hình ảnh dưới dạng tệp.

Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ các hình dạng trong bản trình bày PPT bằng Python.

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

# tải bản trình bày
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # vòng qua các trang trình bày
   for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # lặp qua các hình dạng trong trang trình bày
       for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # kiểm tra xem hình dạng có phải là hình dạng tự động hay khung ảnh không
            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

            # lưu hình ảnh
            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)

Trích xuất hình ảnh từ nền trang trình bày trong PPT

Một kịch bản khác có thể là trích xuất các hình ảnh được sử dụng làm hình nền trang chiếu. Sau đây là các bước để chỉ trích xuất hình ảnh từ nền trang chiếu trong bản trình bày PPT.

  • Đầu tiên, tải bản trình bày bằng lớp Trình bày.
  • Sau đó, lặp qua các trang trình bày bằng bộ sưu tập Presentation.slides.
  • Đối với mỗi trang trình bày, hãy thực hiện các bước sau:
    • Kiểm tra xem trang chiếu có hình nền hay không bằng cách sử dụng thuộc tính ISlide.background.fillformat.filltype.
    • Nếu nền có hình ảnh thì trích xuất hình ảnh bằng thuộc tính ISlide.background.fillformat.picturefillformat.picture.image.
    • Kiểm tra xem trang chiếu bố cục có hình nền hay không bằng cách sử dụng thuộc tính ISlide.layoutslide.background.fillformat.filltype.
    • Nếu hình nền được lấp đầy thì hãy giải nén nó bằng thuộc tính ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Cuối cùng, lưu hình ảnh đã trích xuất dưới dạng tệp.

Mẫu mã sau đây cho thấy cách trích xuất hình ảnh từ nền trang trình bày trong PPT bằng Python.

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

# tải bản trình bày
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # lặp qua các trang trình bày trong bản trình bày
   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

        # kiểm tra xem nền của trang trình bày và bố cục của trang trình bày có được lấp đầy bằng hình ảnh hay không
        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

        # lưu hình ảnh
        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)

Cả hai mẫu mã trên đều sử dụng một phương pháp getimageformat, trả về định dạng hình ảnh thích hợp cho loại được cung cấp. Việc thực hiện phương pháp đó được cung cấp bên dưới.

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)

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để sử dụng Aspose.Slides for Python qua .NET mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, bạn đã học cách trích xuất hình ảnh từ bản trình bày PowerPoint bằng Python. Chúng tôi cũng đã đề cập đến việc trích xuất hình ảnh từ các hình dạng và hình nền trang trình bày một cách riêng biệt. Bên cạnh đó, bạn có thể khám phá thêm về Aspose.Slides for Python bằng cách truy cập tài liệu. Ngoài ra, bạn có thể đặt câu hỏi của mình qua diễn đàn của chúng tôi.

Xem thêm

Thông tin: Aspose cung cấp trình chuyển đổi PowerPoint sang hình ảnh - PPT sang JPG và [PPT sang PNG] [] - cho phép bạn tạo hình ảnh dựa trên các trang trình bày trong bản trình bày.