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中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
用Python中的字典来处理索引统计的方法
May 05 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
Python语言描述连续子数组的最大和
Jan 04 Python
python微信公众号开发简单流程
Mar 23 Python
Python编写一个优美的下载器
Apr 15 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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/10/09 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
使用python分析git log日志示例
2014/02/27 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
python通过链接抓取网站详解
2019/11/20 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
学生会竞选自荐信
2013/10/12 职场文书
调研座谈会发言材料
2014/08/23 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
行政司机岗位职责
2015/04/10 职场文书
红色影片观后感
2015/06/18 职场文书
学校食堂管理制度
2015/08/04 职场文书
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL
Consul在linux环境的集群部署
2022/04/08 Servers