使用 pyecharts 生成图表是非常方便的,而且官方文档也特别详细,可以满足基本全部的图表需求。但是生成后的图表默认是 html 文件。当需要发送邮件时,html 文件放在邮件附件,邮件里不能直接预览,就很不方便。这时需要将 html 文件转成图片,再添加到邮件附件里。
官方提供了 3 种渲染图片的方法,分别是 selenium
, phantomjs
和 pyppeteer
。这里介绍的是 phantomjs
方式,和另外一种 imgkit
方式。
期间测试踩了很多坑,各种搜索解决方案,发现很零碎,有一些写的很简单自己琢磨了很久才解决了报错(也可能是我太菜了),因此整理成本篇文档,希望对大家有用。
环境:Centos 7、Python3
一、使用 snapshot_phantomjs 方式渲染图片
相关文档:https://pyecharts.org/#/zh-cn/render_images
1. 安装
Npm 安装。很容易报错,我就没有安装成功,网上的解决办法也不管用,后面直接去官网下载了
npm install -g phantomjs-prebuilt
去官网下载 https://phantomjs.org/download.html。下载之后解压保存到本地,创建超链接(或者添加环境变量)
ln -s /tmp/phantomjs /usr/local/bin/
安装 pyecharts-snapshot
pip3 install pyecharts-snapshot
2. 修改代码
import os
from pyecharts.render import make_snapshot
from snapshot_phantomjs import snapshot
file_path = "{}/".format(os.path.dirname(os.path.abspath("/tmp/echarts.min.js")))
line=(
Line(init_opts=opts.InitOpts(js_host=file_path, animation_opts=opts.AnimationOpts(animation=False)))
...
)
make_snapshot(snapshot, line.render(), "1.gif",delay=2)
这种方式生成的图片,我这边测试之后图片中的中文特别小,英文没问题,没找到解决办法,大家可以研究一下。
二、 使用 imgkit 转换
1. 安装
下载 wkhtmltox 并安装,官网 https://wkhtmltopdf.org/downloads.html,如果报错 yum 安装依赖包
rpm -ivh wkhtmltox-0.12.6-1.centos7.x86_64.rpm
安装 imgkit
pip3 insatll imgkit
2. 修改代码
import imgkit
imgkit.from_url('http://www.baidu.com', '1.png')
imgkit.from_file('test.html', '1.png')
imgkit.from_string('123456', '1.png')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)