分步骤教你用python一步步提取PPT中的图片

以下是详细的“分步骤教你用python一步步提取PPT中的图片”的攻略:

一、获取PPT文件并导入必要的库

首先需要用Python获取要提取图片的PPT文件,可以使用Python的osglob库来读取文件。接下来,我们需要导入pptxPIL这两个库,pptx库是Python处理PPT文件的重要库,PIL库用来处理图片。

import os
from pptx import Presentation
from PIL import Image

二、遍历PPT文件中所有的幻灯片

遍历幻灯片需要使用pptx库中的Presentation类,它能打开一个PPT文件并且让你读取幻灯片的内容。

ppt = Presentation('example.pptx') #example.pptx为需要提取图片的PPT文件名
#遍历幻灯片
for slide in ppt.slides:
    #在这里写代码
    pass

三、遍历每个幻灯片中的所有形状

通过遍历每个幻灯片中的所有形状,可以找到PPT中的图片。在pptx库中,每个幻灯片的形状存储在 shapes 属性中,该属性返回一个 ShapeTree 类对象,该对象包含 slides 中的所有形状。

#遍历幻灯片
for slide in ppt.slides:
    #遍历幻灯片中的所有形状
    for shape in slide.shapes:
        #在这里写代码
        pass

四、识别PPT的图片形状

有了遍历幻灯片中的所有形状的基础,接下来就需要通过一些代码来判断哪些形状是图片。在pptx中,图片形状的类型为Picture,只需要判断shape的类型是否为Picture即可。

#遍历幻灯片
for slide in ppt.slides:
    #遍历幻灯片中的所有形状
    for shape in slide.shapes:
        #找到图片形状
        if shape.shape_type == 6:
            #在这里写代码
            pass

五、将PPT中的图片保存为PNG格式

找到了PPT中的图片形状之后,就需要将其保存为PNG格式的图片。在pptxPIL库的帮助下,我们可以通过以下代码将每个图片形状保存为PNG格式的图片。

#遍历幻灯片
for slide in ppt.slides:
    #遍历幻灯片中的所有形状
    for shape in slide.shapes:
        #找到图片形状
        if shape.shape_type == 6:
            #获取图片
            image = shape.image
            #提取图片数据
            byte_stream = image.blob
            #将字节数据转换为PIL Image对象
            img_stream = io.BytesIO(byte_stream)
            img = Image.open(img_stream)
            #保存PIL Image对象为PNG格式的图片
            img.save(f"{shape.name}.png")

示例一

假设需要从example.pptx这个文件中提取所有图片。可以使用以下代码:

import os
from pptx import Presentation
from PIL import Image

ppt = Presentation('example.pptx')

#遍历幻灯片
for slide in ppt.slides:
    #遍历幻灯片中的所有形状
    for shape in slide.shapes:
        #找到图片形状
        if shape.shape_type == 6:
            #获取图片
            image = shape.image
            #提取图片数据
            byte_stream = image.blob
            #将字节数据转换为PIL Image对象
            img_stream = io.BytesIO(byte_stream)
            img = Image.open(img_stream)
            #保存PIL Image对象为PNG格式的图片
            img.save(f"{shape.name}.png")

示例二

如果需要从多个PPT文件中提取图片,可以将上述代码放入一个for循环中遍历所有文件。

例如有example1.pptxexample2.pptx两个PPT文件需要提取图片。可以使用以下代码:

import os
from pptx import Presentation
from PIL import Image

#多文件处理
files = ['example1.pptx', 'example2.pptx']

for file in files:
    ppt = Presentation(file)
    #遍历幻灯片
    for slide in ppt.slides:
        #遍历幻灯片中的所有形状
        for shape in slide.shapes:
            #找到图片形状
            if shape.shape_type == 6:
                #获取图片
                image = shape.image
                #提取图片数据
                byte_stream = image.blob
                #将字节数据转换为PIL Image对象
                img_stream = io.BytesIO(byte_stream)
                img = Image.open(img_stream)
                #保存PIL Image对象为PNG格式的图片
                img.save(f"{file}_{shape.name}.png")

这样就可以在循环结束后在每个PPT文件所在的文件夹生成提取出来的PNG图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:分步骤教你用python一步步提取PPT中的图片 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python正则表达式使用经典实例

    下面是关于“Python正则表达式使用经典实例”的完整攻略。 1. 正则表达式简介 正则表达式是匹配字符串的一种工具,它具有强大的匹配能力和灵活的操作方式。在Python中,使用re模块可以实现正则表达式的功能。 2. 实例一:匹配邮箱地址 假设我们需要从一个文本中提取出所有的邮箱地址,可以使用正则表达式来实现。 先来看一个简单的正则表达式[a-zA-Z0-…

    python 2023年6月3日
    00
  • PyTorch策略梯度算法详情

    PyTorch策略梯度算法详情 PyTorch是一个流行的深度学习框架,它提供了许多用于实现强化学习算法的工具。其中,策略梯度算法是一种常用强化学习算法,它可以用于解决多种实际问题。在本文中,我们将介绍PyTorch中策略梯度算法的基本原理,并提供两个示例,以说明如何使用PyTorch实现策略梯度算法。 策略梯度算法的基本原理 策略梯度算法是一种基于梯度的强…

    python 2023年5月14日
    00
  • 浅谈Python实现2种文件复制的方法

    浅谈Python实现2种文件复制的方法 在Python中,文件复制是一种非常基本的操作,本文将介绍两种Python实现文件复制的方法。 方法一:使用shutil模块 使用Python自带的shutil模块来完成文件复制的操作。 import shutil src_file = r’C:\Users\Administrator\Desktop\test.txt…

    python 2023年6月5日
    00
  • python如何安装下载后的模块

    当我们在使用Python编写程序时,通常需要使用一些第三方模块来辅助我们完成工作,这就要求我们在本地机器上安装这些模块。接下来,我将为您介绍如何使用pip来安装下载后的Python模块。 确认Python环境以及pip的正确安装 在开始之前,请首先确保您已经正确地安装了Python环境,在命令行中输入以下两条命令以检查: python –version p…

    python 2023年6月3日
    00
  • python插入排序算法的实现代码

    下面是详细讲解“Python插入排序算法的实现代码”的完整攻略,包含两个示例说明。 插入算法 插入排序算法是一种简单的排序算法,它的基本思想是待排序的序列分为已排序和未排序两部分,然后将未排序的元素逐个插入到已排序的序列中,直到整个序列有序为止。 Python插入排序算法的实现 下面是一个示例代码,用于实现插入算法: def insertion_sort(a…

    python 2023年5月14日
    00
  • 轻量级Web框架Flask(二)

    Flask-SQLAlchemy MySQL是免费开源软件,大家可以自行搜索其官网(https://www.MySQL.com/downloads/) 测试MySQL是否安装成功 在所有程序中,找到MySQL→MySQL Server 5.6下面的命令行工具,然后单击输入密码后回车,就可以知道MySQL数据库是否链接成功。 右击桌面上的“计算机”,在弹出的快…

    python 2023年4月17日
    00
  • Python 使用input同时输入多个数的操作

    当我们需要输入多个数的时候,可以使用Python的input()函数结合字符串分割操作来实现。下面是具体的操作步骤: 使用input()函数接收一个字符串信息,提示用户输入多个数,并且使用空格隔开。 input_str = input("请使用空格隔开输入多个数:") 利用字符串的split()函数将输入的字符串数据转化为一个数值列表(l…

    python 2023年5月18日
    00
  • pip报错“ValueError: invalid literal for int() with base 10: ‘2.3’”怎么处理?

    当使用pip安装Python包时,可能会遇到“ValueError: invalid literal for int() with base 10: ‘2.3’”错误。这个错误通常是由以下原因之一引起的: 版本号格式不正确:如果版本号格式不正确,则可能会出现此错误。在这种情况下,需要更改版本号格式。 包依赖关系不正确:如果包依赖关系不正确,则可能会出现此错误…

    python 2023年5月4日
    00
合作推广
合作推广
分享本页
返回顶部