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 27 Python
Python自定义函数的创建、调用和函数的参数详解
Mar 11 Python
盘点提高 Python 代码效率的方法
Jul 03 Python
详解Python中for循环的使用方法
May 14 Python
python登录豆瓣并发帖的方法
Jul 08 Python
浅谈Python处理PDF的方法
Nov 10 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
你可能不知道的Python 技巧小结
Jan 29 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中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP解析RSS的方法
2015/03/05 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
python根据出生日期返回年龄的方法
2015/03/26 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python2与Python3的区别实例分析
2019/04/11 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
使用python模拟高斯分布例子
2019/12/09 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
Python项目跨域问题解决方案
2020/06/22 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
优秀共产党员先进事迹
2014/01/27 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
2015年企业新年寄语
2014/12/08 职场文书
python 命令行传参方法总结
2021/05/25 Python