最近因为某些需求需要将PPT转换为图片并合并成预览图,于是第一时间就想到了用python解决问题,过程中参考了一位老哥写的文章,链接如下。Python行家:用Python实现ppt转化图片(附带长图合并功能)​zhuanlan.zhihu.com

功能的实现很简单 ,分两步,第一步:将PPT转换为图片格式;第二步:将图片合并生成预览图。

PPT转换为图片:

老哥使用了win32com库来操作com组件,笔者使用comtypes库以实现同样功能。

主要代码如下:

def ppt2png(filePath,picture_path):

fileNames = glob.glob(picture_path + r'\*')

for fileName in fileNames:

os.remove(fileName)

powerpoint = comtypes.client.CreateObject("kwpp.Application") #使用wps的接口

ppt = powerpoint.Presentations.Open(filePath)

# 另存为

ppt.SaveAs(picture_path + '.jpg', 17)

# 退出

ppt.Close()

powerpoint.Quit()

图片合并生成预览图:

使用PIL库,由于PIL仅支持至2.7版本,3.X以上版本需使用pillow。

上面老哥的代码是把所有图片合并成一列,这样会显得图很长,我要的是按3列进行合并,实现起来也很简单,一个取模运算和一个向下取整运算解决问题,于是在他的代码上进行了一下修改:

def generate_long_image(picture_path,preview_name):

last_dir = os.path.dirname(picture_path) # 上一级文件目录

ppl = os.listdir(picture_path)

ppl.sort(key=lambda x: int(x.replace("幻灯片","").split('.')[0]))

print(ppl)

ims = [Image.open(os.path.join(picture_path, fn)) for fn in ppl if fn.endswith('.jpg')]

width, height = ims[0].size # 取第一个图片尺寸

long_canvas = Image.new(ims[0].mode, (width*3, height * math.ceil(len(ims)/3))) # 创建3倍宽,n/3高的白图片

for i, image in enumerate(ims):

j = i%3

k = math.floor(i/3)

long_canvas.paste(image, (j * width, k * height))

long_canvas.save(os.path.join(last_dir, preview_name+'.png')) # 保存长图

最终的效果:

python ppt 图片_利用Python将PPT转换为图片并合成长图相关推荐

  1. python批量生成图片_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

  2. python 钉钉机器人发送图片_利用Python自动发送钉钉数据消息

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

  3. python爬虫好友图片_利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  4. 如何使用python批量压缩图片_利用Python 批量压缩图片

    方法一 直接调整宽高 先放参考资料:如何用Python智能批量压缩图片? import math from glob import glob from PIL import Image import ...

  5. python是动态语言图片_利用python图片生成,需10几行代码,生成的动态表情包(小黄鸭)...

    小编找到了10几行的,好玩的动态表情包生成的代码.分享分享! 这个程序怎么做呢?不要急,来听我给大家分析分析. 工具:程序环境 语言:Python 3.6 编辑器:Pycharm 程序步骤 实现字符动 ...

  6. python数据预测_利用Python编写一个数据预测工具

    利用Python编写一个数据预测工具 发布时间:2020-11-07 17:12:20 来源:亿速云 阅读:96 这篇文章运用简单易懂的例子给大家介绍利用Python编写一个数据预测工具,内容非常详细 ...

  7. python照片墙地图_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  8. python图色检测_利用python打开摄像头及颜色检测方法

    最近两周由于忙于个人项目,一直未发言了,实在是太荒凉了....,上周由于项目,见到Python的应用极为广泛,用起来也特别顺手,于是小编也开始着手学习Python,-下面我就汇报下今天的学习成果吧 小 ...

  9. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

最新文章

  1. Oracle Flashback Database and Restore Points 说明
  2. LiveVideoStack线上分享第三季(十三):腾讯云LiteAVSDK演进之路
  3. Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated) D. Kuroni and the Celebration 交互 + 思维
  4. bootstrap学习笔记(一)网络系统
  5. UmiJS 是一个 react 开发框架
  6. Dockerfile 学习:Docker Alpine PHP 安装扩展
  7. 糯米美团再获融资,团购硝烟再起
  8. 大数据将走向何方?未来大数据的十大趋势评析
  9. C语言字符串分割 trimmed simplified split
  10. 谷歌:民主国家搜索引擎的消费监控
  11. 地牢大师--(BFS+三维数组)
  12. 1.(group by)如何让group by分组后,每组中的所有数据都显示出来
  13. 数据可视化工具之--百度图说
  14. 元宇宙大热,是风口还是虎口
  15. matlab 稳定系统,MATLAB分析在系统稳定性的应用
  16. 二、基于根轨迹法的PID控制器分析与设计
  17. macOS如何快速将视频转化为音频mp3(软件全免费)
  18. 一个JAVA程序员经常访问的网站
  19. RK3588 rtc-hym8563设备开发
  20. 树莓派35/100 - 用graphviz画逻辑电路图

热门文章

  1. 分享自己在uniapp开发中用的css样式
  2. python干货:如何使用Python对音频进行特征提取?
  3. html5 相册翻转效果,HTML5 css3:3D旋转木马效果相册
  4. Excel保护怎么解除保护
  5. 基于STM32分析内存分布图
  6. AttributeError: 'NoneType' object has no attribute 'sc' 解决方法!
  7. pytest的mark功能
  8. python简单小游戏代码-python基础练习之几个简单的游戏
  9. 用Bootstrap写一份简历
  10. 模拟真人浏览网页-浏览器自动滚动-超简单方法