Extrahujte obrázky z PowerPointových prezentací v Pythonu

Obrázky jsou efektivním způsobem komunikace, díky kterému je obsah živý. To je důvod, proč jsou obrázky široce používány na webových stránkách, dokumentech, prezentacích atd. Prezentace MS PowerPoint jsou obvykle sestaveny s méně textem a více grafickými objekty a obrázky. Proto při programovém zpracování prezentací možná budete muset extrahovat obrázky spolu s textem. Abychom toho dosáhli, tento článek popisuje, jak extrahovat obrázky z prezentací PPT nebo PPTX v Pythonu.

Knihovna Pythonu pro extrahování obrázků z prezentací

K extrahování obrázků z PowerPoint prezentací použijeme Aspose.Slides pro Python přes .NET. Je to výkonná knihovna Pythonu, která je navržena pro vytváření prezentací od začátku. Navíc vám umožňuje plynule převádět a manipulovat se stávajícími prezentacemi. Můžete jej nainstalovat z PyPI pomocí následujícího příkazu pip.

> pip install aspose.slides

TIP: Kromě extrahování obrázků z prezentací vám Aspose.Slides umožňuje extrahovat [obrázky z PDF](https ://products.aspose.com/slides/python-net/conversion/pdf-to-image/), převeďte [soubory HTML na obrázky](https://products.aspose.com/slides/python-net/ conversion/html-to-image/) atd. Pomocí Aspose.Slides můžete převést PDF do JPG, převést PDF do HTML, převést [PDF do XML](https://products.aspose. com/slides/python-net/conversion/pdf-to-xml/), převést PDF do SVG , převést PDF na TIFF a provádět související úkoly.

Extrahujte obrázky z PowerPoint PPT v Pythonu

Níže jsou uvedeny kroky k extrahování obrázků z prezentace PowerPoint v Pythonu.

  • Načtěte prezentaci pomocí třídy Prezentace.
  • Procházejte obrázky v prezentaci pomocí kolekce Presentation.images.
  • Uložte každý obrázek jako soubor.

Následující ukázka kódu ukazuje, jak extrahovat obrázky ze souboru PPTX v Pythonu.

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

imageIndex=1
# prezentace zatížení
with slides.Presentation("presentation.pptx") as pres:

    # procházet obrázky
   for image in pres.images:
        file_name = "Image_{0}.{1}"
        image_type = image.content_type.split("/")[1]
        image_format = get_image_format(image_type)

        # uložit obrázek
        image.system_image.save(file_name.format( imageIndex, image_type), image_format)
        imageIndex = imageIndex + 1

Extrahujte obrázky z tvarů v PPT

V některých případech může být nutné extrahovat obrázky pouze z obrazců v prezentaci. Pojďme se tedy podívat, jak extrahovat obrázky z tvarů v PPT v Pythonu.

  • Nejprve načtěte prezentaci pomocí třídy Prezentace.
  • Poté procházejte snímky prezentace pomocí kolekce Presentation.slides.
  • Pro každý snímek získáte přístup k jeho tvarům pomocí kolekce ISlide.shapes.
  • Pro každý tvar v kolekci proveďte následující kroky:
    • Pokud je tvar automatický tvar a jeho typ výplně je obrázek, extrahujte obrázek pomocí vlastnosti IShape.fillformat.picturefillformat.picture.image.
    • Pokud je tvar rámeček obrázku, extrahujte obrázek pomocí vlastnosti IShape.pictureformat.picture.image.
    • Nakonec uložte obrázek jako soubor.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z obrazců v prezentaci PPT pomocí Pythonu.

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

# prezentace zatížení
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # procházet diapozitivy
   for slide in pres.slides:
        slideIndex += 1
        image_format = drawing.imaging.ImageFormat.jpeg
        file_name = "BackImage_Slide_{0}{1}.{2}"
      
        # procházet tvary na snímku
       for i in range(len(slide.shapes)):
            shape = slide.shapes[i]
            shape_image = None

            # check is shape je automatický tvar nebo rámeček obrázku
            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

            # uložit obrázek
            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)

Extrahujte obrázky z pozadí snímků v PPT

Dalším scénářem může být extrahování obrázků, které se používají jako pozadí snímků. Následují kroky k extrahování obrázků pouze z pozadí snímků v prezentaci PPT.

  • Nejprve načtěte prezentaci pomocí třídy Prezentace.
  • Poté procházejte snímky prezentace pomocí kolekce Presentation.slides.
  • Pro každý snímek proveďte následující kroky:
    • Zkontrolujte, zda má snímek obrázek na pozadí pomocí vlastnosti ISlide.background.fillformat.filltype.
    • Pokud má pozadí obrázek, extrahujte obrázek pomocí vlastnosti ISlide.background.fillformat.picturefillformat.picture.image.
    • Pomocí vlastnosti ISlide.layoutslide.background.fillformat.filltype zkontrolujte, zda má snímek rozvržení obrázek na pozadí.
    • Pokud je pozadí vyplněno obrázkem, extrahujte jej pomocí vlastnosti ISlide.layoutslide.background.fillformat.picturefillformat.picture.image.
    • Nakonec uložte extrahovaný obrázek jako soubor.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z pozadí snímků v PPT v Pythonu.

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

# prezentace zatížení
with slides.Presentation("pres.pptx") as pres:
    slideIndex = 0
    image_type = ""
    
    # procházet snímky v prezentaci
   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

        # zkontrolujte, zda je pozadí snímku a snímku rozvržení vyplněno obrázkem
        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

        # uložit obrázek
        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 výše uvedené ukázky kódu používají metodu getimageformat, která vrací vhodný formát obrázku pro daný typ. Implementace této metody je uvedena níže.

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)

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci k používání Aspose.Slides pro Python přes .NET bez omezení hodnocení.

Závěr

V tomto článku jste se naučili, jak extrahovat obrázky z PowerPoint prezentací v Pythonu. Samostatně jsme také pokryli extrakci obrázků z tvarů a pozadí snímků. Kromě toho můžete prozkoumat více o Aspose.Slides pro Python návštěvou dokumentace. Své dotazy můžete pokládat také prostřednictvím našeho fóra.

Viz také

Informace: Aspose poskytuje PowerPoint na převodníky obrázků — PPT na JPG a [PPT na PNG][] — které umožňují generovat obrázky na základě snímků v prezentaci.