图片来源于网络

1

前言

笔者前一阵在学习数据相关的东西,从初学开始,一直在参加社区中的图表小挑战,此项活动是社区出题人给出一定官方数据,参加小挑战的人员可以对数据进行可视化,从而挖掘出有趣的信息。

而这个可视化的过程中,用到的可视化工具叫 Tableau ,大家有兴趣可以去查看下,能做出非常美丽的图,之前一直分享在朋友圈里,有些朋友也看到了。

在参与比赛的过程中,笔者遇到一个头疼的点,每次做成的图表拷到ppt中,要想可观的将ppt中的多个图叠在一起生成一张长图,或者单独生成图片,是万万不能实现的!而微软的PPT要自己安装插件!

经过百般查找,一些在线网站是支持的,但是要不是遇到了图片限定大小,要不遇到了带水印的!

于是,ε=(´ο`*)))唉,还是自己动手,丰衣足食一下吧!有了这个想法,用 Python 实现下这个功能!估计也有不少人有此需求吧。。

在明确需求,确认下目标,其一,可以实现 ppt 每页都生成对应图片。其二,支持将图片进行长图合并。

2

效果演示

先来看下我的 ppt ,一共三页:

演示效果:

3

核心代码讲解

1. ppt 转 png 方法,利用 win32com 来操作 ppt。

def ppt2png(ppt_path, long_sign: str): """  ppt 转 png 方法    :param ppt_path: ppt 文件的绝对路径    :param long_sign: 是否需要转为生成长图的标识 :return:    """  if os.path.exists(ppt_path):    output_path = output_file(ppt_path)  # 判断文件是否存在    ppt_app = win32com.client.Dispatch('PowerPoint.Application') ppt = ppt_app.Presentations.Open(ppt_path)  # 打开 ppt   ppt.SaveAs(output_path, 17)  # 17数字是转为 ppt 转为图片 ppt_app.Quit()  # 关闭资源,退出    if 'Y' == long_sign.upper():    generate_long_image(output_path)  # 合并生成长图  else:   raise Exception('请检查文件是否存在!\n')

2. 多个单图合并,生成长图,使用了 PIL。

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

廖雪峰官方站

在使用 PIL 之前,需要先安装 pillow 。(中文,枕头的意思)

$ pip install pillow
def generate_long_image(output_path):   picture_path = output_path[:output_path.rfind('.')]  last_dir = os.path.dirname(picture_path)  # 上一级文件目录    # 获取单个图片    ims = [Image.open(os.path.join(picture_path, fn)) for fn in os.listdir(picture_path) if fn.endswith('.png')] width, height = ims[0].size  # 取第一个图片尺寸    long_canvas = Image.new(ims[0].mode, (width, height * len(ims)))  # 创建同宽,n高的白图片 # 拼接图片  for i, image in enumerate(ims): long_canvas.paste(image, box=(0, i * height))  long_canvas.save(os.path.join(last_dir, 'long-image.png'))  # 保存长图

代码没什么可讲的,注释写的贼清楚啦!自行观看即可!

4

结语

在自己"造轮子"之前,其实笔者是查阅了相关资料的,github 上有两个脚本,但是不符合笔者的需求,所以还是又重新造了一遍。。。

本项目可以当做入门,实用的练手小项目,自己写外加调试大概用了一个多小时,即可完成。

热 门 推 荐
用Python创建微信机器人

用Python机器人监听微信群聊

用Python获取摄像头并实时控制人脸

开源项目 | 用Python美化LeetCode仓库

推荐Python中文社区旗下的几个服务类公众号
征稿启事 | Python中文社区有奖征文

用Python实现PPT转化图片相关推荐

  1. pythonppt_用Python实现ppt转化图片(附带长图合并功能)

    用Python实现ppt转化图片(附带长图合并功能) 前言 笔者前一阵在学习数据相关的东西,从初学开始,一直在参加社区中的图表小挑战,此项活动是社区出题人给出一定官方数据,参加小挑战的人员可以对数据进 ...

  2. canvas导出图片python_用Python实现ppt转化图片(附带长图合并功能)

    用Python实现ppt转化图片(附带长图合并功能) 前言 笔者前一阵在学习数据相关的东西,从初学开始,一直在参加社区中的图表小挑战,此项活动是社区出题人给出一定官方数据,参加小挑战的人员可以对数据进 ...

  3. python多张图片生成ppt_用Python实现ppt转化图片(附带长图合并功能)

    前言 笔者前一阵在学习数据相关的东西,从初学开始,一直在参加社区中的图表小挑战,此项活动是社区出题人给出一定官方数据,参加小挑战的人员可以对数据进行可视化,从而挖掘出有趣的信息. 而这个可视化的过程中 ...

  4. python ppt 图片_利用Python将PPT转换为图片并合成长图

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

  5. canvas导出图片python_利用Python将PPT转换为图片并合成长图

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

  6. 【超实用】python批量ppt转图片,pdf转图片,word转图片脚本,直接拿去用

    前言 某天我们运营在编辑后台的时候说每次上传ppt,pdf,word时都要把每个文件先导出一次图片,然后一个一个上传(png用作预览,ppt,pdf,word源文件不能直接下载的,要付费),说效率太低 ...

  7. Linux平台PPT转图片(Python)

    由于网站一般是展示PPT,想要在WEB上进行PPT展示且资源地址不在公网,一般只能通过PPT转化为图片,再由前端进行图片的展示. 由于项目部署环境都在Linux平台,所以需要进行Linux平台上PPT ...

  8. python保存ppt为高清无水印

    本文仅作代码备份用 # -*- coding: UTF-8 -*- import os import sysdef get_all_ppts(path):# 获取所有 ppt 文件ppt_paths ...

  9. python ppt 图片_Python PPT 转化为图片 支持拼接成一张图片

    import win32com import win32com.client import sys import os from PIL import Image #获取当前目录 ppt_root = ...

最新文章

  1. rgb fusion检测不到显卡_7000元AMD平台装机:3600X配RTX2060显卡怎么样
  2. 关于开发过程中的空指针问题
  3. [Android官方API阅读]___Application Fundamentals
  4. svn 没有绿色小勾
  5. Java当中包装类的理解和一些常用方法的分享(学习后分享)
  6. bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?
  7. 信息学奥赛一本通(1178:成绩排序)——选择排序
  8. 华为nova7se能云闪付吗_华为迎来转机!联发科“顶替”麒麟芯片,已售罄手机将重获新生...
  9. Flask和WebSocket
  10. servlet的请求和重定向详解
  11. matlab光流彩图,hs 用matlab编译的经典光流算法HS ,附有程序需 图像 238万源代码下载- www.pudn.com...
  12. 动易CMS粘贴word图片且图片文件自动上传功能
  13. 调用聚合数据新闻头条API
  14. 《艰难的制造》:4星。基本是关于制造业的报告文学。严重剧透。
  15. IOS屏幕旋转的检测 与 强行切换
  16. 频率超出范围黑屏Linux,Win10专业版分辨率超出工作频率范围黑屏怎么办
  17. API是用来干什么的
  18. Oracle中实现分页
  19. CSS3打造磨砂玻璃的背景
  20. 全国各大学精品课程网站

热门文章

  1. 【活动图】下图是一个软件项目的活动图,其中顶点表示项目里程碑,链接顶点的便表示包含的活动,边上的数字表示完成该活动所需的天数。求关键路径长度。
  2. POE供电 5G通讯变压器 芯片
  3. 基于MFC的凸多面体的消隐实现
  4. 自动驾驶系统进阶与项目实战(九)基于行锚框和全局信息的深度学习车道线检测方法
  5. 【cocos2d-x 手游研发小技巧(2)循环无限滚动的登陆背景】
  6. 乐视开机向导显示服务器,乐视电视开机停在主界面,一直进不了系统是什么原因?-乐视电视开不了机...
  7. 前端开发小技巧---用tab快速生成标签
  8. Flask-sqlalchemy一对多,多对一,一对一,多对多
  9. 计算机工程与应用 【两次外审,另请专家再审也可以录】
  10. 更新至2020年分省数字经济发展水平测度指标(20多个指标)