Python工具源码,Python批量提取PPT文件中的图片

在办公场景当中,同样也有这样一个需求,那就是快速批量把PPT文件中的图片提取出来,毕竟一个个点击另存为太过于繁琐,以及耗费时间,前面本渣渣分享过如何应用Python批量提取PDF文件中的图片,而这一篇本渣渣就为大家分享如何应用Python批量提取PPT文件中的图片。

其实不通过代码脚本的形式也可以快速方便的提取PPT中的图片文件,这里分享一个简单方法,那就是将PPT文件后缀更改为rar压缩文件的格式,通过解压的方式来获取所有的图片文件,感兴趣的话不妨尝试一番!

言归正传,应用Python批量提取PPT文件中的图片有两种方式,一种是单纯的提取PPT文件中的图片,这种方法可能会存在图片文件缺失的情况,而第二种方法是直接将每一页PPT转换成图片。

方法一:应用Python-pptx库

1.安装方法:

pip install python-pptx

2.提取图片使用方法:

# -*- coding: utf-8

from pptx import Presentation
import os
import sys

'''
功能:
    将pptx中出现的图片素材全部导出
'''
ppt_root = jpg_root = sys.path[0]
print(ppt_root)
i = 0


def ppt2png(pptFileName):
    # 实例化ppt对象
    prs = Presentation(pptFileName)  # PPT文件路径
    # 遍历

    for slide in prs.slides:
        for obj in slide.shapes:
            # try/except 因为非图片元素没有Image方法会弹出异常.
            try:
                global i
                # 获取二进制字符流
                imdata = obj.image.blob
                # 判断文件后缀类型
                imagetype = obj.image.content_type
                typekey = imagetype.find('/') + 1
                i += 1
                imtype = imagetype[typekey:]

                # 创建image文件夹保存抽出图片
                path = jpg_root + "/image/"

                if not os.path.exists(path):
                    os.makedirs(path)
                # 图片生成
                obj.name = "Picture" + str(i)
                image_file = path + obj.name + "." + imtype

                file_str = open(image_file, 'wb')
                file_str.write(imdata)
                file_str.close()
            except:
                pass


for fn in (fns for fns in os.listdir(ppt_root) if fns.endswith(('.ppt', 'pptx'))):
    ppt2png(fn)
    

方法二:使用win32com导出图片

使用方法:

#将ppt每页转化为图片
# -*- coding: utf-8 -*-
import os
import win32com
import win32com.client

# 存储PPT为JPG格式的类型,所对应的数值
ppSaveAsJPG = 17

def ppt_to_jpg(ppt_file_name,output_dir_name):
    '''将PPT另存为JPG格式
    arguments:
        ppt_file_name: 要转换的ppt文件的完整路径文件名,eg:F:\\test\\ppt_name.ppt
        output_dir_name:转换后的存放JPG文件的目录,以PPT的名字新建的目录,eg:F:\\test\\ppt_name
    '''
    # 启动PPT
    ppt_app = win32com.client.Dispatch('PowerPoint.Application')
    # 设置为0表示后台运行,不显示,1则显示
    ppt_app.Visible = 1
    # 打开PPT文件
    ppt = ppt_app.Presentations.Open(ppt_file_name)
    # 另存为,第一个参数为报存图片的目录,第二个是报存的格式。
    ppt.SaveAs(output_dir_name, ppSaveAsJPG)
    # 退出PPT
    ppt_app.Quit()

if __name__ == '__main__':
    # 当前文件所在目录,eg: F:\\test,如果你要指定某个目录,则手动指定current_dir 即可
    current_dir=r'E:\Python\pdfjpg\1'
    #current_dir = os.sys.path[0]
    # 当前目录下所有文件,遍历的结果是文件名。
    dir_list = os.listdir(current_dir)
    # 当前目录下所有的PPT文件,eg: ppt_name.ppt
    ppt_file_names = (fns for fns in dir_list if fns.endswith(('.ppt','.pptx')))
    # 当前目录下所有的PPT文件名,这两者的区别在于有无后缀名,eg: ppt_name
    # splitext的作用是,'xx.jpg',会分成'xx'和'.jpg'
    ppt_names = (os.path.splitext(fns)[0] for fns in dir_list if fns.endswith(('.ppt','.pptx')))
    # 因为只需要文件名,这样也行
    # ppt_names = (fns.split('.')[0] for fns in ppt_file_names)
    for ppt_file_name,ppt_name in zip(ppt_file_names,ppt_names):
        # 该PPT的完整路径文件名,eg: F:\\test\\ppt_name.ppt
        ppt_file_name = os.path.join(current_dir,ppt_file_name)
        # 需要新建一个与PPT同名的文件,获取完整路径,eg:  F:\\test\\ppt_name
        ppt_dir_path = os.path.join(current_dir,ppt_name)
        # 创建新目录
        os.mkdir(ppt_dir_path)
        # print ppt_file_name, ppt_dir_path
        ppt_to_jpg(ppt_file_name,ppt_dir_path)
        

以上代码均为本渣渣抄袭而来,仅供学习参考,如有疑问,可度娘解答!

来源:

1.Python 将 PPT 中的图片素材批量导出

https://blog.csdn.net/weixin_43575040/article/details/104631516

2.PPT中出现的图片素材批量导出&PPT全部导出生成图片

https://www.cnblogs.com/xiaoqiangink/p/14486735.html

相关阅读:

Python脚本工具,PyMuPDF批量提取PDF文件中的图片

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

关注我的都变秃了

说错了,都变强了!

不信你试试

扫码关注最新动态

公众号ID:eryeji

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值