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统计文件行数示例分享
Feb 21 Python
Python易忽视知识点小结
May 25 Python
Python Socket编程详细介绍
Mar 23 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
Python实现矩阵转置的方法分析
Nov 24 Python
python如何将图片转换为字符图片
Aug 19 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
python和JavaScript哪个容易上手
Jun 23 Python
python打包多类型文件的操作方法
Sep 21 Python
10个示例带你掌握python中的元组
Nov 23 Python
python删除csv文件的行列
Apr 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
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHP 函数学习简单小结
2010/07/08 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
javascript 一些用法小结
2009/09/11 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python模拟登录12306的方法
2014/12/30 Python
使用python实现knn算法
2017/12/20 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
django admin 添加自定义链接方式
2020/03/11 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
优秀信贷员先进事迹
2014/01/31 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
小学校长汇报材料
2014/08/20 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python