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多线程(python多线程简明教程)
Jun 09 Python
Python实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
决策树的python实现方法
Nov 18 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Python控制Firefox方法总结
Jun 03 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
关于Tensorflow分布式并行策略
Feb 03 Python
如何基于windows实现python定时爬虫
May 01 Python
Python 下载Bing壁纸的示例
Sep 29 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 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中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
canvas的神奇用法
2017/02/03 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
用实例说明python的*args和**kwargs用法
2013/11/01 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python实现简单http服务器
2018/04/12 Python
Python装饰器语法糖
2019/01/02 Python
django 控制页面跳转的例子
2019/08/06 Python
Python实现仿射密码的思路详解
2020/04/23 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
白色公司:The White Company
2017/10/11 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
应聘教师自荐信
2013/10/12 职场文书
个人求职信范文分享
2014/01/06 职场文书
鲜花方阵解说词
2014/02/13 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
《花木兰》教学反思
2014/04/09 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android