分步骤教你用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中的decode()与encode()深入理解

    Python中的decode()与encode()深入理解 理解Unicode和字符编码 在深入理解Python中的decode()和encode()函数之前,有必要了解Unicode和字符编码的基础知识。 在计算机中,每个字符都有一个对应的数字编码,这种编码方式称为字符编码。不同的字符编码方式有不同的映射表,可以将字符和数字编码互相转换。常见的字符编码方式…

    python 2023年5月20日
    00
  • python 使用OpenCV进行简单的人像分割与合成

    下面我将详细讲解如何使用Python和OpenCV进行简单的人像分割与合成。 什么是OpenCV? OpenCV是一个开源的跨平台计算机视觉库,可用于开发实时图像处理、计算机视觉、人机交互、物体识别等应用。OpenCV支持多种编程语言,包括C++、Python和Java等。 人像分割 人像分割是指将一张图片中的人像从背景中分离出来。在OpenCV中,我们可以…

    python 2023年6月6日
    00
  • python中print格式化输出的问题

    当我们在Python中使用print()函数输出结果时,经常需要进行格式化输出,让输出的内容更直观,易于理解。本篇攻略将详细讲解有关Python中print格式化输出的问题。 基本格式化方式 Python中使用字符串格式化语法来格式化print()函数的输出信息。格式化语法使用%字符作为标记,后面跟着一个或多个格式化字符,用来控制输出信息的样式。 例如,我们…

    python 2023年6月5日
    00
  • Python文件及目录操作实例详解

    对于“Python文件及目录操作实例详解”,我将为你提供完整的攻略。在这个话题中,我们将探讨以下内容: 使用Python访问文件和目录 创建、复制和重命名文件和目录 遍历目录和递归搜索文件和目录 使用Python访问文件和目录 我们可以使用Python内置的os模块来访问文件和目录。下面是一些常用的函数: os.getcwd():获取当前工作目录。 os.l…

    python 2023年5月31日
    00
  • Python必备技巧之Pandas数据合并函数

    下面是关于“Python必备技巧之Pandas数据合并函数”的完整攻略: 1. Pandas数据合并函数 在数据分析过程中,往往需要将多个数据源进行合并,这时候就需要使用Pandas中的数据合并函数。Pandas提供了多种数据合并函数,常用的有concat、merge和join函数。 concat函数:沿着一个轴将多个对象合并,并按照指定条件进行重构。 jo…

    python 2023年5月13日
    00
  • Python对字符串实现去重操作的方法示例

    下面是关于“Python对字符串实现去重操作的方法示例”的详细攻略。 1. 去重操作的目的和方法 去重操作的目的是为了消除字符串中的重复项,使字符串中的元素互不相同。Python提供了多种去重方法,这里介绍其中两种常用的方法。 1.1 使用set()函数进行去重 使用Python自带的set()函数可以很方便地对字符串进行去重操作。具体方法如下: str1 …

    python 2023年6月3日
    00
  • Python Pyqt5多线程更新UI代码实例(防止界面卡死)

    下面是Python Pyqt5多线程更新UI代码实例(防止界面卡死)的完整攻略。 1. 背景 在使用PyQt5进行GUI开发时,假如某个计算机密集型的操作耗时较长,那么就可能会导致界面卡死,影响用户体验。为了避免这种情况,可以利用多线程更新UI的方式来解决。 2. 实现过程 2.1 创建线程 在PyQt5中利用QThread创建线程,在其run方法中执行需要…

    python 2023年5月19日
    00
  • Python群发邮件实例代码

    当我们需要向多个人发送相同内容的邮件时,手动逐一发送邮件显然是一件非常繁琐的事情。Python的smtplib和email库提供了一种便捷的方式来群发邮件,需要我们完成以下步骤: 1.准备收件人邮箱信息和邮件正文信息。 2.使用smtplib库连接邮件服务器,认证登录账号。 3.创建EmailMessage对象,设置邮件标题、发送者、正文等信息。 4.发送邮…

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