前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python工具源码,Python批量提取PPT文件中的图片

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

作者头像
二爷
发布2021-08-23 15:18:28
1.3K0
发布2021-08-23 15:18:28
举报
文章被收录于专栏:二爷记二爷记

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

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

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

方法一:应用Python-pptx库

1.安装方法:

代码语言:javascript
复制
pip install python-pptx

2.提取图片使用方法:

代码语言:javascript
复制
# -*- 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导出图片

使用方法:

代码语言:javascript
复制
#将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·················

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与SEO学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法一:应用Python-pptx库
  • 方法二:使用win32com导出图片
  • Python脚本工具,PyMuPDF批量提取PDF文件中的图片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档