用python成批从ppt中截取指定大小图片

        因为工作需要,要经常从大量ppt演示文稿中截取图片,并压缩为成指定大小的缩略图。以前都是把ppt一个一个打开,然后另存为图片,再用图片处理工具把图片大小调整为指定尺寸。这种做法费时费力,还经常把文件名搞错。

        学习了python以后,利用python打开win32应用,就可以自动打开ppt,并按我们的要求,自动生成指定数量、指定格式的图片,并把图片保存到我们指定的目录中。

一、要求:

1、必须安装ms powerpoint ,我安装的是powerpoint 2010。

2、导入pypiwin32包。(命令行方式下输入:python -m pip install pypiwin32)

二、代码:代码如下,注释已经非常清楚如,不再另行说明

#本程序用于python成批截取PPT的图片
import os
import win32com.client
#指定PPT所在文件夹和jpg文件存放位置
ppt_dir="E:/new/ppt/"
pic_dir="E:/new/pic/"
#指定每个PPT截取图片数量及图片格式
pic_count=5#每个ppt取图片数,如为0则全部取
pic_fmt="jpg"
#指定图片的宽高
pic_width=427
pic_height=240

# 定义遍历指定的文件夹的函数
def walkFile(file):
    for root,dirs,files in os.walk(file):
    #for root, dirs, files in os.walk(file):
        # root 表示当前访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list
        # 遍历文件
        for f in files:
            #print(os.path.join(root, f))
            Presentation = Application.Presentations.Open(os.path.join(root,f))
            page_Count=Presentation.Slides.count#得到当前PPT文件的页数
            if pic_count==0:#如为0,则处理PPT中的所有图片
                for i in range(page_Count):
                    #生成图片文件名为ppt文件名+1……n的格式,如ppt文件为aaa.pptx,,则生成图片为aaa.pptx_1.jpg,aaa.pptx_2.jpg,aaa.pptx_3.jpg
                    pic_fname=f"{pic_dir}{f}_{i+1}.{pic_fmt}"
                    Presentation.Slides[i].Export(pic_fname, pic_fmt, pic_width, pic_height)
                    print("正在生成"+pic_fname+"\n")
                    
            else:#处理ppt中指定数量的图片
                #如果ppt的总张数大于等于指定的数量,处理指定数量,否则只处理总张数
                for i in range( pic_count if page_Count >= pic_count else page_Count):
                    #生成图片文件名为ppt文件名+1……n的格式,如ppt文件为aaa.pptx,,则生成图片为aaa.pptx_1.jpg,aaa.pptx_2.jpg,aaa.pptx_3.jpg
                    pic_fname=f"{pic_dir}{f}_{i+1}.{pic_fmt}"
                    Presentation.Slides[i].Export(pic_fname, pic_fmt, pic_width, pic_height)
                    print("正在生成"+pic_fname+"\n")


            Presentation.Close()

        # 遍历所有的文件夹
        for d in dirs:
            print(os.path.join(root, d))




#设置应用为PowerPoint
Application = win32com.client.Dispatch("PowerPoint.Application")
#设置powerpoint应用显示窗口,但不显示警告信息
Application.Visible =1
Application.DisplayAlerts = 0
walkFile(ppt_dir)
Application.Quit()

三、运行效果

Ppt文件放入指定文件夹(我指定的是e:/new/ppt)。

 

运行上面的代码。

 

完成后,图片自动保存到指定文件夹(我指定的是e:/new/pic)

 

说明:测试环境:

  1. Win11 22h2
  2. python3.11.1
  3. Office 2010
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值