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计算书页码的统计数字问题实例
Sep 26 Python
Python 的描述符 descriptor详解
Feb 27 Python
Python实现简单登录验证
Apr 13 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
Oct 28 Python
如何获取Python简单for循环索引
Nov 21 Python
Django设置Postgresql的操作
May 14 Python
scrapy头部修改的方法详解
Dec 06 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
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python中使用Counter进行字典创建以及key数量统计的方法
2018/07/06 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
Python将string转换到float的实例方法
2019/07/29 Python
python3实现mysql导出excel的方法
2019/07/31 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
C#和SQL Server的面试题
2016/08/12 面试题
业务经理的岗位职责
2013/11/16 职场文书
办公室前台岗位职责
2014/01/04 职场文书
对祖国的寄语大全
2014/04/11 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
婚宴新娘致辞
2015/07/28 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python