pyecharts 图表 将 Html 文件转成图片

2023-05-16


使用 pyecharts 生成图表是非常方便的,而且官方文档也特别详细,可以满足基本全部的图表需求。但是生成后的图表默认是 html 文件。当需要发送邮件时,html 文件放在邮件附件,邮件里不能直接预览,就很不方便。这时需要将 html 文件转成图片,再添加到邮件附件里。

官方提供了 3 种渲染图片的方法,分别是 selenium, phantomjspyppeteer。这里介绍的是 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

#针对报错 Can't find variable: echarts\n\n undefined:1\nnull\n 的解决办法
#原因是因为图表中有中文,生成的 html 文件中 echarts.min.js 引用有问题,修改一下引用
#将 https://assets.pyecharts.org/assets/echarts.min.js 下载到本地,然后添加下面的代码

#animation_opts 表示开启/禁止图表加载动画

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)))
...
)

#开始截图,加到结尾,delay 表示延迟 2s,避免图表没加载完
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(使用前将#替换为@)

pyecharts 图表 将 Html 文件转成图片 的相关文章

  • HTML5 支持命名空间吗?

    我们是否可以使用新标签来扩展 HTML5 例如
  • 宽度:适合内容;在 Chrome 上工作,但在资源管理器上不工作

    我构建了一个应用程序 所有内容都在 Chrome 中完美显示 但如果我在 Windows 资源管理器中打开该应用程序 容器会比应有的小 我在用着width fit content 这是只适用于 Chrome 的东西吗 我怎样才能使其适用于所
  • 可以使用带有 HTML5 播放器的 Amazon S3/CloudFront 流式传输视频吗?

    我想使用 HTML5 视频播放器并流式传输视频 S3 CloudFront 可以实现这一点吗 我了解 Amazon 使用 RTMP 流媒体协议和 HTML5video标签不支持 RTMP 有没有办法用 HTML5 播放器播放视频 Wayne
  • 如何使用 JavaScript 获取元素的填充值?

    我有一个textarea在我的 HTML 中 我需要获取整数或浮点形式的填充数值 以像素为单位 我如何使用 JavaScript 获取它 我没有使用 jQuery 所以我正在寻找纯 JavaScript 解决方案 这将返回padding l
  • 水平对齐输入字段

    我正在尝试获取一个输入字段 并且它与同一水平线上的关联提交按钮相关 但事实证明这是一个挑战 这是我的代码
  • 如何设置 CSS 网格的最大高度

    我有以下 CSS 网格 grid 3x4 display grid grid template columns 1fr 1fr 1fr grid template rows 1fr 1fr 1fr 1fr grid template are
  • 应用旋转时,HTML5 canvas Clip() 在 Chrome 中不起作用

    我试图在画布上使用剪辑区域 一旦坐标系旋转任何非零值 它就会停止工作 window onload function var canvas document getElementById mainCanvas var ctx canvas g
  • 设置浏览器窗口最小化的最小尺寸限制?

    有没有办法在所有浏览器中手动设置浏览器窗口的最小尺寸 你可以试试 body min width 600px 一旦视口小于 600 像素 您将得到一个水平滚动条 这仅适用于支持 min width CSS 属性的现代浏览器 我认为不可能限制用
  • 在 HTML5 中创建可拖动和可缩放的网格

    与其他 HTML5 不同如何创建网格问题 我想知道如何制作一个可拖动且可扩展的 绘制网格非常简单 var c document getElementById canvas var ctx c getContext 2d var width
  • 使用 jQuery 清除 IMG

    我正在尝试从 a 中删除加载的图像 img 元素 但清除或删除 src 不会执行此操作 该怎么办 HTML img src https www google com images srpr logo3w png JQUERY img att
  • 如何将udp发送到udp node.js服务器?

    我对此很陌生 所以我真的不知道我在做什么 但我已经设置了一个 node js udp 服务器 我想从客户端 来自网站 向它发送一个数据包 但我不知道如何在 javascript 中做到这一点 或者是否可能 我不是在研究如何从 Node js
  • 调整文本区域大小

    我需要使用文本区域来显示一些文本 问题是 如果我放置 4 5 行文本 就会出现滚动条 如何使用 CSS HTML 使文本区域与其内容一样大 没有滚动条 文本区域不需要动态更改其大小 我仅使用它来显示文本 我也可以使用禁用的文本区域 我希望文
  • HTML5 历史 API

    我如何使用 HTML5 历史 api 我确实经历过https developer mozilla org en DOM Manipulated the browser history https developer mozilla org
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • 防止浮动换行,直到元素达到最小宽度

    我有可变宽度的 HTML 布局 内容左侧有一个固定宽度的菜单 div 可变宽度 由 css max width 和 min width 设置 对于非常窄的浏览器窗口 我希望内容包裹在菜单下方 我目前通过设置来实现这一点float left在
  • 如何将此 HTML 表格布局解决方案转换为浮动 div 解决方案?

    我经常需要列出各种尺寸的项目images在左边和text在右边 像这样 替代文本 http www deviantsart com upload 7s01l5 png http www deviantsart com upload 7s01
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • W3C 验证器:“握手警报:unrecognized_name”

    我正在尝试验证我的网站W3C Nu Html 检查器 https validator w3 org nu doc https 3A 2F 2Fwww healthdrop in 2F但我遇到了以下错误 不知道为什么 IO 错误 握手警报 u
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的

随机推荐

  • 【Python包管理系列1】python打包发布到PyPI全过程(入门版)

    文章目录 目的准备知识PyPIPyPAsetuptoolsbuildtwine 实战过程总结 目的 如果发布一个python包到pypi上 xff0c 共他人使用 xff0c 本文试图讲清楚 准备知识 PyPI 官网地址 xff1a htt
  • Web自动化测试(二)—— Selenium-API操作

    其他Web测试知识参考 xff1a Web自动化测试 目录 一 元素定位 1 如何进行元素定位 xff1f 2 浏览器开发者工具 2 1 如何使用浏览器开发者工具 二 元素定位方式 1 id定位 2 name定位 3 class name定
  • Java中字符串中子串的查找共有四种方法(indexof())

    亲测可用 xff0c 若有疑问请私信 indexOf 方法返回一个整数值 xff0c 指出 String 对象内子字符串的开始位置 如果没有找到子字符串 xff0c 则返回 1 如果 startindex 是负数 xff0c 则 start
  • 使用rust构建一个js引擎

    转载于 https my oschina net lilugirl2005 blog 3067895
  • Linux下使用acme.sh 配置https 免费证书

    acme sh 简单来说acme sh 实现了 acme 协议 可以从 let s encrypt 生成免费的证书 acme sh 有以下特点 xff1a 一个纯粹用Shell xff08 Unix shell xff09 语言编写的ACM
  • iOS 性能优化之内存优化

    近四年没更CSDN了 xff0c 感慨万千 近年来在搞一款比较大的APP xff0c 项目中代码量100w 43 xff0c 里面使用的三方库 其他领域的二进制包比较多 xff1b 以前这些三方 二进制都挤在同一个工程目录下 xff0c 导
  • 内核升级和降级

    查看已安装的内核 sudo dpkg get selections grep linux 不一样的系统版本升级内核要装的东西对应也不一样 xff0c 需要根据 get selections 安装对应的内核组件 使用apt get 即可完成安
  • Docker: Debian安装Docker

    Debian安装Docker 内容由 网络搜罗整理而来 xff0c 记录与共享 一 APT安装 官方Debian存储库中提供的Docker安装包可能不是最新版本 为了确保我们获得最新版本 xff0c 我们将从官方Docker存储库安装Doc
  • CodeBlocks快捷键

    原文地址 xff1a https blog csdn net lxt lucia article details 79572829 一 汇总 1 编辑部分 xff1a 按住Ctrl xff0c 滚动鼠标滚轮 xff0c 放大或缩小字体 Ct
  • ubuntu 操作系统的目录结构

    Ubuntu 系统的目录众多 xff0c 但是所有的目录都是在 目录下面的 xff0c 并且 Ubuntu 系统是不分 C 盘 D 盘等的 那么 Ubuntu 系统的这些目录具体有哪些呢 xff1f 他们的作用分别是什么呢 xff1f 下面
  • ubuntu安装和查看已安装

    说明 xff1a 由于图形化界面方法 xff08 如Add Remove 和Synaptic Package Manageer xff09 比较简单 xff0c 所以这里主要总结在终端通过命令行方式进行的软件包安装 卸载和删除的方法 一 U
  • CloudKitty安装指导

    安装以下几个模块 xff1a cloudkitty api API service cloudkitty processor Processing service collecting and rating cloudkitty dbsyn
  • Release file for http://xxx/ubuntu/dists/bionic-updates/InRelease is not valid yet报错解决

    参考 https blog 51cto com 5437315 2420097 中说明的原因 原因 xff1a 系统时间与网络时间 xff08 仓库 xff09 的不同导致更新错误 按照这个原因解释 xff0c 我查看了自己虚拟机内ubun
  • Android平台下的图片/视频转Ascii码图片/视频 (二)

    忙里偷闲又来写一篇文章 xff0c 最近在更新一些好玩的图片算法 xff0c 当然也没落下优化ascii码的图像效果 xff0c 这次我将更换一种计算ascii码的方式 xff0c 这样能更好的添加一些效果 xff0c 并且更加清楚的讲解一
  • usage: conda-script.py [-h] [-V] command ... conda-script.py: error: the following arguments are re

    网上看到很多修改condarc文件的说法 xff0c 各有分说 xff0c 各有办法 xff0c 但又不统一 实际上就是你的tensorflow版本不行 https mirrors tuna tsinghua edu cn anaconda
  • github文件下载慢的完美解决方案

    经常光顾github的程序猿朋友有可能面临这样的问题 xff0c 公司或者家里的网速不给力或者 xff0c 宽带运营商比较渣渣 xff08 笔者的宽带是北京宽带通 xff0c 对 就是长城宽带 xff0c 访问国外这种没被墙的网站慢的一匹
  • Java多态实现原理

    Java多态概述 多态是面向对象编程语言的重要特性 xff0c 它允许基类的指针或引用指向派生类的对象 xff0c 而在具体访问时实现方法的动态绑定 Java 对于方法调用动态绑定的实现主要依赖于方法表 xff0c 但通过类引用调用 inv
  • Class文件内容及常量池

    当JVM运行Java程序的时候 xff0c 它会加载对应的class文件 xff0c 并提取class文件中的信息存放在JVM开辟出来的方法区 内存中 那么这个class文件里面到底有些什么内容呢 xff1f 一 class文件内容概述 c
  • 解决Multiple dex files define Landroid/support/v4/accessibilityservice的问题

    Error Execution failed for task 39 DeviceManage transformClassesWithDexForDebug 39 gt com android build api transform Tr
  • pyecharts 图表 将 Html 文件转成图片

    使用 pyecharts 生成图表是非常方便的 xff0c 而且官方文档也特别详细 xff0c 可以满足基本全部的图表需求 但是生成后的图表默认是 html 文件 当需要发送邮件时 xff0c html 文件放在邮件附件 xff0c 邮件里