python生成带有表格的图片实例


Posted in Python onFebruary 03, 2019

因为工作中需要,需要生成一个带表格的图片

例如:

直接在html中写一个table标签,然后单独把表格部分保存成图片

或者是直接将excel中的内容保存成一个图片

刚开始的思路,是直接生成一个带有table标签的html文件,然后将这个文件转成图片,经过查找资料发现需要安装webkit2png,而这个库又依赖其他的东西,遂放弃。

当初的目标是直接生成一个图片,并且是只需要安装python依赖库就行,而不需要在系统层面安装相应的依赖包

后来考虑使用Python的图片处理库Pillow,和生成表格式的库prattytable,下面的图片是最终生成的图片效果

python生成带有表格的图片实例

总体来说是分为两个步骤:

使用prattytable将要展示的数据生成一个表格字符串

使用pillow,将生成的表格字符串写入到图片中

下面是具体实现:

from prettytable import PrettyTable
from PIL import Image, ImageDraw, ImageFont
tab = PrettyTable()
# 设置表头
tab.field_names = ["Name", "Age","Country","City"]
# 表格内容插入
tab.add_row(['chal','23','中国','Shanghai'])
tab.add_row(['charle','29','China','Xuzhou'])
tab.add_row(['jack','32','United States','Washington'])
tab_info = str(tab)
space = 5

# PIL模块中,确定写入到图片中的文本字体
font = ImageFont.truetype('/home/doge/YaHeiConsolas.ttf', 15, encoding='utf-8')
# Image模块创建一个图片对象
im = Image.new('RGB',(10, 10),(0,0,0,0))
# ImageDraw向图片中进行操作,写入文字或者插入线条都可以
draw = ImageDraw.Draw(im, "RGB")
# 根据插入图片中的文字内容和字体信息,来确定图片的最终大小
img_size = draw.multiline_textsize(tab_info, font=font)
# 图片初始化的大小为10-10,现在根据图片内容要重新设置图片的大小
im_new = im.resize((img_size[0]+space*2, img_size[1]+space*2))
del draw
del im
draw = ImageDraw.Draw(im_new, 'RGB')
# 批量写入到图片中,这里的multiline_text会自动识别换行符
# python2
draw.multiline_text((space,space), unicode(tab_info, 'utf-8'), fill=(255,255,255), font=font)
# python3
# draw.multiline_text((space,space), tab_info, fill=(255,255,255), font=font)

im_new.save('12345.PNG', "PNG")
del draw

至此就生成了上面的图片。但是还有一点问题,在使用中文时,表格会又一些错列,应该是使用字体的事,因为我没有找到合适的字体,所以这个问题暂时没有解决。

以上这篇python生成带有表格的图片实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python类型强制转换long to int的代码
Feb 10 Python
python使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
python安装以及IDE的配置教程
Apr 29 Python
玩转python爬虫之正则表达式
Feb 17 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
python 回溯法模板详解
Feb 26 Python
Python Django路径配置实现过程解析
Nov 05 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 Python
对python生成业务报表的实例详解
Feb 03 #Python
使用Python快速制作可视化报表的方法
Feb 03 #Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 #Python
Python告诉你木马程序的键盘记录原理
Feb 02 #Python
Python实现DDos攻击实例详解
Feb 02 #Python
Python实现SQL注入检测插件实例代码
Feb 02 #Python
Django uwsgi Nginx 的生产环境部署详解
Feb 02 #Python
You might like
PHP静态类
2006/11/25 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
js实现右键菜单功能
2016/11/28 Javascript
jsTree使用记录实例
2016/12/01 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
Vue中util的工具函数实例详解
2019/07/08 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
浅谈MySQL中的触发器
2015/05/05 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
用 python 进行微信好友信息分析
2020/11/28 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
平安校园建设方案
2014/05/02 职场文书
2014年实习生工作总结
2014/11/27 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
平安建设汇报材料
2014/12/29 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis