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自定义类的数组排序实现代码
Aug 28 Python
Python中如何获取类属性的列表
Dec 26 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
python遍历序列enumerate函数浅析
Oct 17 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
python多个模块py文件的数据共享实例
Jan 11 Python
python 图片去噪的方法示例
Jul 09 Python
如何在Django项目中引入静态文件
Jul 26 Python
python、Matlab求定积分的实现
Nov 20 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Django drf请求模块源码解析
Jun 08 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
类似框架的js代码
2006/11/09 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python 文件操作实现代码
2009/10/07 Python
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python判断直线和矩形是否相交的方法
2015/07/14 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python字符串Intern机制详解
2019/07/01 Python
关于Python-faker的函数效果一览
2019/11/28 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
行政文员岗位职责
2013/11/08 职场文书
会计助理的岗位职责
2013/11/29 职场文书
小学生新年寄语
2014/04/03 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
Python中基础数据类型 set集合知识点总结
2021/08/02 Python