场景需求

妹子找我说目录下有一堆的PPT文件,格式有ppt,pptx,大概几千上万个的,里面有个烦人的Logo ,而且位置不一样,需要删除,更换成指定的Logo图片,人工去搞麻烦死了。

技术分析

格式不统一是比较麻烦,目前掌握的python-pptx 只能操作pptx文件,找妹子说能否统一升级到pptx,答说是没问题,那就稍微好办一点了,遍历目录,利用 win32com 来进行格式转换,再用python-pptx 操作删除指定的图片logo,百度,bing 网上搜了一下,只有添加shape文本元素的案例,并没有找到删除操作的例子,更别说替换图片了。

经过查看官方API文档(python-pptx — python-pptx 0.6.21 documentation)和不断尝试摸索,终于实现了 删除旧替换图片的功能。

实现要点

第一、遍历目录ppt2pptx格式转换

import win32com.clientapp = win32com.client.Dispatch('PowerPoint.Application')
app.Visible = True
app.DisplayAlerts = False
ppt = app.Presentations.Open("课件工坊-长征组歌.ppt")

..遍历目录逻辑代码自行补充吧,转换格式核心用到win32com,另外电脑要安装能处理PPT的软件,如Powerpoint

第二、提取样本图片指纹

    import hashlib    imageFile = open("课件工坊Logo.png", "rb")imgBlob = imageFile.read()md5finger = hashlib.md5(imgBlob).hexdigest()print(md5finger)

旧ppt文件另存出来的需要替换的logo

第三、查找并删除,同样位置插入新图片

def replace_pic4shapes(filename, newpic, oldpic):# 把旧样本图片Logo,获取指纹imageFile = open(oldpic, "rb")imgBlob = imageFile.read()md5finger = hashlib.md5(imgBlob).hexdigest()prs = Presentation(filename)for slide in list(prs.slides)[0:]:for shape in list(slide.shapes):ispicture= Falsetry:md5img = hashlib.md5(shape.image.blob).hexdigest()ispicture = Trueexcept:passe = shape.elementif ispicture:if md5img == md5finger:                   slide.shapes.add_picture(newpic, shape.left, shape.top, shape.width, shape.height)e.getparent().remove(e)passprs.save("课件工坊-长征组歌新文件.pptx")

后记,可以补充加入:如果原来logo旋转了,可以加入对插入图片的旋转的功能

python-pptx 操作PPTx幻灯片文件删除并替换图片相关推荐

  1. python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹

    python opencv 实现从一个文件夹中读取图片切割处理后放入另一个文件夹. 实现的功能是把一个文件夹里的图片作处理,即把原图片中心为起点切割成1536*1536的图片,原图片必须大于这个的大小 ...

  2. Python Pandas操作Excel表格文件:创建新表格,追加数据

    前言: python操作excel表格文件的增删读写,一般需要用到的第三方库有xlwt,xlrd.xlrd负责读取excel,xlwt负责写入excel文件.这种操作方法比较繁琐,效率还不错,通俗易懂 ...

  3. Linux服务器生产环境中的文件删除与替换

    在Linux运维中经常遇到要替换Linux服务器系统程序或者业务应用程序文件的情况,很多人都会担心,直接替换会不会导致Linux系统程序崩溃或者应用程序崩溃,而需要关闭服务才敢替换,今天在freebu ...

  4. python如何将多个文件夹的PNG图片批量转换为jpg图片(无损转换)

    一般不需要后期处理分析的照片无需使用PNG格式,对于普通的风景人物的照片可以无损转换为jpg格式,这个过程只是将原图png格式中保存空白信息的多余通道去掉而已,并不会影响画质,而内存一般可以变为原来的 ...

  5. jQuery节点操作创建节点元素删除节点 替换节点复制节点等基本本操作

    节点操作 jQuery中节点操作 查找节点(前面章节已讲) 创建节点 插入节点 删除节点 替换节点 复制节点 创建节点元素 工厂函数$()用于获取或创建节点 $(selector):通过选择器获取节点 ...

  6. java数组元素替换操作_js数组操作(添加、删除、替换元素)

    1.添加元素 函数:push(para),参数说明para要添加的元素 示例: var lang = ["php","java","javascrip ...

  7. Python 批量读取多个文件夹下的图片

    对不同文件夹下的特定图片进行处理 import cv2 import ospath = "F:\pycharm project\de\su" # path必须是英文 for fil ...

  8. python中操作pptx中的表格填充背景没有透明度调节的解决方案

    前言 bug来源,我有一个需求,需要调节pptx里面某个表格的填充背景是有RGB颜色,这个python里面pptx库可以调节,但是无法查找到调节提敏度. 我调节对应的RGB        呈现了这种颜 ...

  9. python txt 操作_python TXT文件操作

    #coding:utf-8 import MySQLdb #连接数据库 db = MySQLdb.connect() db.set_character_set('utf8') cursor = db. ...

  10. ImageCLEF数据集处理(Python读取txt内容创建文件夹;将图片拷贝至指定文件夹)

    1. 问题描述 做迁移时候用到公共数据集ImageCLEF, 但是给的结构如图: 有b,c,i, p四种图像数据,和list数据,对应每一条数据的名称及其标签,记录举例如下: b/252.car-si ...

最新文章

  1. discuz,ecshop的伪静态规则(apache+nginx)
  2. 【 C 】彻底学会字符串常量
  3. spring_在Spring中使用多个动态缓存
  4. 函数的递归调用(专题)
  5. Java基础—8大数据类型
  6. Python中的除法保留两位小数
  7. java中输出值保留四位小数_Java工程师(3).变量和数据类型
  8. frame中src怎么设置成一个变量_Go 语言设计哲学之七:变量声明须一致
  9. A4.2021年全国数学建模竞赛A题-赛题分析与评阅要点(FAST主动反射面的形状调节)
  10. 网站优化:浏览器缓存控制简介及配置策略
  11. 已免押1000亿!芝麻信用:靠信用出去浪
  12. 嵌套DIV中的onClick事件在嵌套容器中的连环作用
  13. MongoDB 概述、下载安装、配置 、启动与连接
  14. rabbitmq python高性能开发_RabbitMQ工作队列实现高性能任务的负载分发[Python实例]...
  15. SAP 独立系统的传输请求
  16. Fortran入门教程(二)——数据类型
  17. html打包成APP,h5打包成apk,浅显易懂!
  18. Typecho 插件开发基础
  19. 谷歌Google验证
  20. 计算机常用的四种加密方法,电脑常见的几种加密方法

热门文章

  1. android 释放摄像头,android – 为什么Camera需要在onPause()而不是onstop()方法中释放?...
  2. 三维立体地图开发项目书
  3. CAN总线学习:zlg关于can帖子汇总
  4. 解决在HD Audio模式下Windows系统前置面板耳机无声音的问题
  5. 微鉴道长SLAM学习笔记(目录)
  6. [转]互联网系统架构的演进
  7. golang处理NAN值
  8. YDOOK: Python:requests: Scanic: 客户端 client 向服务器请求照片并返回 post请求
  9. G盘格式化了,要怎样恢复文件
  10. 怎样在oblog中添加音乐播放器