Wyodrębnij obrazy z prezentacji PowerPoint w Python

Obrazy są skutecznym sposobem komunikacji, który ożywia treść. To jest powód, dla którego obrazy są powszechnie stosowane na stronach internetowych, dokumentach, prezentacjach itp. Prezentacje MS PowerPoint są zwykle zbudowane z mniejszej ilości tekstu i większej liczby obiektów graficznych i obrazów. Dlatego podczas programowego przetwarzania prezentacji może być konieczne wyodrębnienie obrazów wraz z tekstem. Aby to osiągnąć, w tym artykule opisano, jak wyodrębnić obrazy z prezentacji PPT lub PPTX w Python.

Biblioteka Python do wyodrębniania obrazów z prezentacji

Aby wyodrębnić obrazy z prezentacji PowerPoint, użyjemy Aspose.Slides for Python przez .NET. Jest to potężna biblioteka Python, która została zaprojektowana do tworzenia prezentacji od podstaw. Co więcej, umożliwia bezproblemową konwersję i manipulowanie istniejącymi prezentacjami. Możesz zainstalować go z PyPI za pomocą następującego polecenia pip.

> pip install aspose.slides

Wyodrębnij obrazy z PowerPoint PPT w Python

Poniżej przedstawiono kroki, aby wyodrębnić obrazy z prezentacji PowerPoint w Python.

  • Załaduj prezentację za pomocą klasy Presentation.
  • Przeglądaj obrazy w prezentacji, korzystając z kolekcji Presentation.images.
  • Zapisz każdy obraz jako plik.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z pliku PPTX w języku Python.

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

imageIndex=1
# prezentacja ładunku
with slides.Presentation("presentation.pptx") as pres:

    # przeglądać obrazy w pętli
   for image in pres.images:
        file_name = "Image_{0}.{1}"
        image_type = image.content_type.split("/")[1]
        image_format = get_image_format(image_type)

        # zapisać obraz
        image.system_image.save(file_name.format( imageIndex, image_type), image_format)
        imageIndex = imageIndex + 1

Wyodrębnij obrazy z kształtów w PPT

W niektórych przypadkach może być konieczne wyodrębnienie obrazów tylko z kształtów w prezentacji. Zobaczmy więc, jak wyodrębnić obrazy z kształtów w PPT w Python.

  • Najpierw załaduj prezentację za pomocą klasy Presentation.
  • Następnie przejrzyj slajdy prezentacji, korzystając z kolekcji Presentation.slides.
  • Dla każdego slajdu uzyskaj dostęp do jego kształtów za pomocą kolekcji ISlide.shapes.
  • Dla każdego kształtu w kolekcji wykonaj następujące czynności:
    • Jeśli kształt jest kształtem automatycznym, a jego typem wypełnienia jest obraz, wyodrębnij obraz za pomocą właściwości IShape.fillformat.picturefillformat.picture.image.
    • Jeśli kształtem jest ramka obrazu, wyodrębnij obraz za pomocą właściwości IShape.pictureformat.picture.image.
    • Na koniec zapisz obraz jako plik.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z kształtów w prezentacji PPT przy użyciu języka Python.

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

# prezentacja ładunku
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # przewijać slajdy
   for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # pętla przez kształty w slajdzie
       for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # Sprawdź, czy kształt jest automatycznym kształtem lub ramką obrazu
            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

            # zapisać obraz
            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)

Wyodrębnij obrazy z tła slajdów w PPT

Innym scenariuszem może być wyodrębnianie obrazów, które są używane jako tła slajdów. Poniżej przedstawiono kroki, aby wyodrębnić obrazy tylko z tła slajdów w prezentacji PPT.

  • Najpierw załaduj prezentację za pomocą klasy Presentation.
  • Następnie przejrzyj slajdy prezentacji, korzystając z kolekcji Presentation.slides.
  • Dla każdego slajdu wykonaj następujące czynności:
    • Sprawdź, czy slajd ma obraz tła za pomocą właściwości ISlide.background.fillformat.filltype.
    • Jeśli tło ma obraz, wyodrębnij obraz, używając właściwości ISlide.background.fillformat.picturefillformat.picture.image.
    • Sprawdź, czy slajd układu ma obraz tła, używając właściwości ISlide.layoutslide.background.fillformat.filltype.
    • Jeśli tło jest wypełnione obrazem, rozpakuj je za pomocą właściwości ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Na koniec zapisz wyodrębniony obraz jako plik.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z tła slajdów w PPT w Python.

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

# prezentacja ładunku
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # przejrzyj slajdy w prezentacji
   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

        # sprawdź, czy tła slajdu i slajdu układu są wypełnione obrazem
        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

        # zapisać obraz
        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)

Oba powyższe przykłady kodu używają metody getimageformat, która zwraca odpowiedni format obrazu dla podanego typu. Poniżej przedstawiono implementację tej metody.

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)

Uzyskaj bezpłatną licencję

Możesz uzyskać darmową tymczasową licencję, aby używać Aspose.Slides for Python przez .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyłeś się, jak wyodrębniać obrazy z prezentacji PowerPoint w Python. Omówiliśmy również wyodrębnianie obrazów z kształtów i tła slajdów osobno. Poza tym możesz dowiedzieć się więcej o Aspose.Slides for Python, odwiedzając dokumentację. Możesz także zadawać pytania za pośrednictwem naszego forum.

Zobacz też

Informacje: Aspose zapewnia konwertery PowerPoint na obrazy — PPT na JPG i [PPT na PNG][] — które umożliwiają generowanie obrazów na podstawie slajdów w prezentacji.