Vue将页面中Echarts动态图导出Gif动图

2023-11-19

Vue将页面中Echarts动态图导出Gif动图

首先,准备工作需要三个依赖的js

第一个js采用npm进行安装:

npm install html2canvas

第二个js采用下载放入项目中进行使用,下载链接:

https://pan.baidu.com/s/1YYVD3xRwOL91hecjJjiTOw
提取码:1234

第三个js采用下载放入项目中进行使用,

下载链接:https://pan.baidu.com/s/1Yozk4f-cw6CrkB4zKiaeAw
提取码:1234

好的,下载完成后,正式开始

  1. .在vue页面中要有容纳echart生成的dom节点
<div id="chartRoot">

</div>
  1. 在vue页面中引入,这里是关键点,只要引入成功,
    调用downLoadGifImg()即可生成gif图
import  html2canvas  from "html2canvas";//采用npm依赖引入
import  GIF   from "@/js/base/gif.js";//gif图合并js(这里可以放入项目后更改引用路径)
import { getGifWorker  } from "@/js/base/gifWorker.js";//gif图合并js(这里可以放入项目后更改引用路径)
  1. 在vue页面中,methods中声明生成Gif的函数方法
methods: {
	//点击调用生成Gif图
	downLoadGifImg(){
		let time=10000;
		var start = Date.now()
		//time 为录制时长 毫秒
		time = time || 0
		let canvasDom = document.querySelector('#chartRoot canvas');//获取到渲染echarts的canvas元素
		function loop(){
			//html2canvas 可以执行指定dom元素屏幕截取,截取的图为回调参数canvas
			html2canvas(canvasDom,{allowTaint: true}).then(function(canvas) {
				gif.addFrame(canvas, {delay: 150});//将截取画布元素canvas添加进Gif.js的方法中,delay为一帧时长 150ms延时
				if(Date.now() - start >= time){
					gif.render();//渲染开始启动 导出gif
				}else{
					loop();//继续执行
				}
			});
		}
		//创建一个GIF实例
		var gif = new GIF({
			workers: 2,//启用两个worker。
			quality: 10,//图像质量
			workerScript: getGifWorker()
		});
		let that=this;
		//gif渲染完成后执行的回调,即下载。
		gif.on('finished', function(blob) {//最后生成一个blob对象
			//下载动作
			var el = document.createElement('a');
			el.href = URL.createObjectURL(blob);
			el.download = 'GIF信息图'; //设置下载文件名称
			document.body.appendChild(el);
			var evt = document.createEvent("MouseEvents");
			evt.initEvent("click", false, false);
			el.dispatchEvent(evt);
			document.body.removeChild(el);
		});
		loop();
	}
}
  1. 最后在button加点击事件绑定downLoadGifImg()即可
例:<el-button @click="downLoadGifImg()" >点击生成Gif下载</el-button>

备注总结:

gif.js
gifWorker.js
这两个js用官网的下载后
在vue中不能直接使用(因为没有export方法等)
上方贴的百度网盘链接下载的是本人已经更改完成
在vue中可以使用的。

有关这几个用到的js在我的另一篇Blog中有更详细的介绍,这里就不详细介绍了 只列出了使用方法,有需要的可跳转查看

链接:点击跳转 https://blog.csdn.net/qq_43953273/article/details/120551807

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue将页面中Echarts动态图导出Gif动图 的相关文章

随机推荐

  • Mybatis plus 数据加密

    数据加密重中之重个铁铁 先准备加解密工具类 package com byyl web utils import org springframework util Base64Utils import javax crypto Cipher
  • 【密码学】破解维吉尼亚密码(C++代码实现)

    问题简述 维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法 属于多表密码的一种简单形式 在一个凯撒密码中 字母表中的每一字母都会作一定的偏移 例如偏移量为3时 A就转换为了D B转换为了E 而维吉尼亚密码则是由一些偏移量不同的凯撒密
  • unix环境高级编程第三版源代码编译及使用

    估计好多学习unix linux的程序员都知道有这么一本书 最近笔者也开始膜拜膜拜此书 在编译源代码的时候 遇到了一些问题 现在在这里做下总结 加深自己的印象 或许也有遇到此问题的同仁 可以参考参考 先强调一下 笔者的开发环境是centos
  • 单细胞测序数据的降维方法和细胞亚型鉴定聚类方法

    单细胞测序数据的降维方法和细胞亚型鉴定聚类方法是单细胞转录组分析中常用的技术 下面是对这些方法的总结 1 降维方法 主成分分析 PCA PCA是一种常用的降维方法 通过线性变换将高维数据转化为低维表示 保留最大的方差 t SNE t SNE
  • Nginx一键自动化部署安装shell脚本

    bin bash 安装Nginx相关依赖 yum install y gcc make wget zlib devel openssl devel pcre devel 下载Nginx源码 wget http nginx org downl
  • Android中字体使用的单位是,Android中设置TextView字体大小时的单位问题

    项目开发中使用如下代码动态设置TextView字体大小 发现设置的字体和预期差别很大 errText setTextSize context getResources getDimensionPixelSize R dimen lost t
  • HTTP文件断点续传原理解析(源码)

    生活中 有许多事物 在没有被揭开面纱之前 我们往往会觉得很神秘很高深 认为它一定很难 进而望而却步 失去了解它的机会 然而 很多事 只要我们自己能沉下心来 细细研究 那些神秘高深的 也会变得简单明了 HTTP文件断点续传 就是这样一个好例子
  • pyltp包下载及使用

    pyltp包下载 1 下载wheel whl下载地址 windows下python3 5 windows下python3 6 下载好了以后 在命令行下 cd到wheel文件所在的目录 然后使用命令 pip install 文件名 whl安装
  • linux qt设置 命令,linux – 在QMake中设置RPATH命令

    我有一个 Linux Qt程序 我希望它优先使用可执行文件目录中的 动态 Qt库 如果存在 否则使用系统的Qt库 RPATH来救援 我将此行添加到qmake的 pro文件中 QMAKE LFLAGS Wl rpath ORIGIN 用rea
  • 【Unity3d】碰撞体、刚体、OnTriggerEnter和OnCollisionEnter用法与区别

    今天学习遇到了一些关于碰撞体和刚体还有相关事件的问题 刚体Rigidbody 是赋予物体力的的作用效果的基础 包括重力 拉力 阻力也是拉力的一种 角拉力 角阻力同样 物体悬空时会掉落 被其他东西碰到时 假设有碰撞体 会朝着受力方向运动或产生
  • openGauss学习笔记-47 openGauss 高级数据管理-权限

    文章目录 openGauss学习笔记 47 openGauss 高级数据管理 权限 47 1 语法格式 47 2 参数说明 47 3 示例 openGauss学习笔记 47 openGauss 高级数据管理 权限 数据库对象创建后 进行对象
  • C语言 创建文件夹

    C语言课程设计心得 include
  • SpringBoot项目使用视图解析器解决Circular view path 问题

    1 我的controller Controller public class LoginController RequestMapping login public String login return login 2 我的html页面l
  • Django基础1——项目实现流程

    文章目录 一 前提了解 二 准备开发环境 2 1 创建项目 2 1 1 pycharm创建 2 1 2 命令创建 2 2 创建应用 例1 效果实现 例2 网页展示日志文件 一 前提了解 基本了解 官网 Django是Python的一个主流W
  • nginx响应码301及访问路径参数丢失之间的关系

    nginx响应码301及访问路径参数丢失之间的关系 本文比较长 所以写了一篇比较短的结果导向的文章 换了一下思路 大家可以看一这篇文章 如果感兴趣再来看这篇文章 nginx导致vue设置history模式下的请求丢失参数 背景描述 在一次生
  • VUE路由的跳转的4中方式

    vue 路由跳转四种方式 带参数 router link 带参数 不带参数 this router push 函数里面调用 1 2 3 this router replce 用法同上 push this router go n 一 1 ro
  • 一步真实解决TypeError: unlink() got an unexpected keyword argument ‘missing_ok‘

    在谷歌服务器colab上跑yolo代码 训练自己的yolov5模型 遇到这个错误 可把我整不会了 已经做好了数据集 建立了新的data下的yaml和model下的yaml文件 然后使用代码 python train py 运行train p
  • 新仙魔九界研发及设计分析

    玩法本质属于捕鱼RPG玩法 美术风格属于国风 非常有特色 目前整体的玩法 性能优化和体验各方面都做的不错 从第三方数据平台获知该游戏目前月流水在600万 且有未来还有巨大的增长空间 这也不是波克城市第一次做出尝试 早在2015年就尝试过一个
  • druid 解析select查询sql获取表名,字段名,where条件

    解析select sql生成QueryModelInfo param dbTypeName mysql oracle param selectSql return public static QueryModelInfo parse Str
  • Vue将页面中Echarts动态图导出Gif动图

    Vue将页面中Echarts动态图导出Gif动图 首先 准备工作需要三个依赖的js 第一个js采用npm进行安装 npm install html2canvas 第二个js采用下载放入项目中进行使用 下载链接 https pan baidu