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解析xml中dom元素的方法
Mar 12 Python
python使用socket向客户端发送数据的方法
Apr 29 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
python去除扩展名的实例讲解
Apr 23 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
python简单区块链模拟详解
Jul 03 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Django之form组件自动校验数据实现
Jan 14 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
python 闭包函数详细介绍
Apr 19 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笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
python购物车程序简单代码
2018/04/18 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
奖学金自我鉴定范文
2013/10/03 职场文书
房产买卖委托公证书
2014/04/04 职场文书
小学一年级评语大全
2014/04/22 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
邀请函怎么写
2015/01/30 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
浅析Django接口版本控制
2021/06/26 Python
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL