Extrahera bilder från PowerPoint-presentationer i Python

Bilder är ett effektivt sätt att kommunicera som gör innehållet levande. Detta är anledningen till att bilderna används allmänt i webbsidor, dokument, presentationer etc. MS PowerPoint-presentationer är vanligtvis uppbyggda med mindre text och mer grafiska objekt och bilder. När du bearbetar presentationerna programmatiskt kan du därför behöva extrahera bilder tillsammans med texten. För att åstadkomma det täcker den här artikeln hur man extraherar bilder från PPT eller PPTX presentationer i Python.

Python Library för att extrahera bilder från presentationer

För att extrahera bilder från PowerPoint-presentationer kommer vi att använda Aspose.Slides for Python via .NET. Det är ett kraftfullt Python-bibliotek som är designat för att skapa presentationer från grunden. Dessutom låter det dig konvertera och manipulera befintliga presentationer sömlöst. Du kan installera det från PyPI med följande pip-kommando.

> pip install aspose.slides

TIPS: Förutom att extrahera bilder från presentationer, låter Aspose.Slides dig extrahera [bilder från PDF](https ://products.aspose.com/slides/python-net/conversion/pdf-to-image/) dokument, konvertera [HTML-filer till bilder](https://products.aspose.com/slides/python-net/ conversion/html-to-image/), etc. Med Aspose.Slides kan du konvertera PDF till JPG, konvertera PDF till HTML, konvertera [PDF till XML](https://products.aspose. com/slides/python-net/conversion/pdf-to-xml/), konvertera PDF till SVG , konvertera PDF till TIFF och utföra relaterade uppgifter.

Extrahera bilder från en PowerPoint PPT i Python

Följande är stegen för att extrahera bilder från en PowerPoint-presentation i Python.

  • Ladda presentationen med presentationsklassen.
  • Gå igenom bilderna i presentationen med Presentation.images-samlingen.
  • Spara varje bild som en fil.

Följande kodexempel visar hur man extraherar bilder från en PPTX-fil i Python.

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

imageIndex=1
# ladda presentationen
with slides.Presentation("presentation.pptx") as pres:

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

        # spara bild
        image.system_image.save(file_name.format( imageIndex, image_type), image_format)
        imageIndex = imageIndex + 1

Extrahera bilder från former i en PPT

I vissa fall kan du behöva extrahera bilder endast från formerna i en presentation. Så låt oss se hur man extraherar bilder från former i en PPT i Python.

  • Ladda först presentationen med presentationsklassen.
  • Gå sedan igenom presentationsbilderna med Presentation.slides-samlingen.
  • För varje bild kommer du åt dess former med ISlide.shapes-samlingen.
  • Utför följande steg för varje form i samlingen:
    • Om formen är en automatisk form och dess fyllningstyp är bild, extrahera bilden med egenskapen IShape.fillformat.picturefillformat.picture.image.
    • Om formen är en bildram, extrahera bilden med hjälp av egenskapen IShape.pictureformat.picture.image.
    • Slutligen sparar du bilden som en fil.

Följande kodexempel visar hur man extraherar bilder från former i en PPT-presentation med Python.

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

# ladda presentationen
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # slinga genom diabilder
   for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # slinga genom former i glid
       for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # check is shape är en automatisk form eller bildram
            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

            # spara bild
            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)

Extrahera bilder från bildbakgrunder i en PPT

Ett annat scenario kan vara att extrahera bilderna som används som bildbakgrunder. Följande är stegen för att extrahera bilder endast från bildbakgrunder i en PPT-presentation.

  • Ladda först presentationen med presentationsklassen.
  • Gå sedan igenom presentationsbilderna med Presentation.slides-samlingen.
  • Utför följande steg för varje bild:
    • Kontrollera om bilden har en bakgrundsbild med egenskapen ISlide.background.fillformat.filltype.
    • Om bakgrunden har bild, extrahera bilden med hjälp av egenskapen ISlide.background.fillformat.picturefillformat.picture.image.
    • Kontrollera om layoutbilden har en bakgrundsbild med egenskapen ISlide.layoutslide.background.fillformat.filltype.
    • Om bakgrunden är fylld med en bild, extrahera den med hjälp av egenskapen ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Slutligen, spara den extraherade bilden som en fil.

Följande kodexempel visar hur man extraherar bilder från bildbakgrunder i en PPT i Python.

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

# ladda presentationen
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # gå igenom bilderna i presentationen
   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

        # kontrollera om bildens och layoutbildens bakgrunder är fyllda med bild
        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

        # spara bild
        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)

Båda ovanstående kodexempel använder en metod getimageformat, som returnerar lämpligt bildformat för den angivna typen. Implementeringen av den metoden ges nedan.

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)

Skaffa en gratis licens

Du kan få en gratis temporär licens för att använda Aspose.Slides för Python via .NET utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har du lärt dig hur du extraherar bilder från PowerPoint-presentationer i Python. Vi har också behandlat extrahering av bilder från former och bildbakgrunder separat. Dessutom kan du utforska mer om Aspose.Slides för Python genom att besöka dokumentationen. Du kan också ställa dina frågor via vårt forum.

Se även

Info: Aspose tillhandahåller PowerPoint till bildkonverterare – PPT till JPG och [PPT till PNG][] – som låter dig skapa bilder baserade på bilder i en presentation.