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获取系统默认字符编码的方法
Jun 04 Python
python列表的常用操作方法小结
May 21 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python flask 多对多表查询功能
Jun 25 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
python 三元运算符使用解析
Sep 16 Python
Python-openCV读RGB通道图实例
Jan 17 Python
windows下python安装pip方法详解
Feb 10 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
详解pandas apply 并行处理的几种方法
Feb 24 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函数
2017/01/15 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
js中this的用法实例分析
2015/01/10 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
python复制文件的方法实例详解
2015/05/22 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python使用建议技巧分享(三)
2020/08/18 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
什么是方法的重载
2013/06/24 面试题
审计专业自荐信范文
2014/04/21 职场文书
网络研修心得体会
2016/01/08 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android