重点:getDataURL函数
参考链接:https://echarts.apache.org/zh/api.html#echartsInstance.getDataURL
代码:
<template><div class="event-chart"><-- 引用封装好的的图表组件EventChart.vue !--><event-chart:title="this.title":xAxis="xAxis"id= "chart1"></event-chart></div><-- 上传图片按钮 !--><divclass="btn"@click="upImgData">上传图片</div></template>
一张图片
methods: {// 上传图片upImgData () {var chart1 = echarts.init(document.getElementById('chart1'));// var canvas = document.getElementsByTagName('canvas') // 获取所有图表的canvasconsole.log('chart1', chart1)var image1 = chart1.getDataURL({ type: 'png', backgroundColor: '041c5b' });console.log('image1:---', image1) // image1图片的base64代码this.axios({url: 'https://xxx.com/KlzJvU181b9653a42b0fbba3cafabf59a0c800361a6750f/home/upImg', // 服务器地址method: 'post',data: image1 // 发送图片转换后的base64}).then(res => {console.log('发送成功', res)}).catch((console.error('失败')))}}
多张图片,可以在xxx.index中编写,以获取该界面上所有的图片
<infos-chart:xAxis="xAxis":yAxis1="refuelArr":yAxis2="serviceArr":title="this.title":color="color":seriesNames="seriesNames":yAxisNames="yAxisNames"chartType1="line"class="efficiency-chart"id="chartImg"/>
// 上传图片upImgData () {// 利用"echarts"就可获取当前页面所有的图表元素var echartsElement = document.getElementsByClassName('echarts')console.log('echartsElement', echartsElement)// 将这些图片元素初始化并放入数组中const echartsArr = []for (let i = 0; i < echartsElement.length; i++) {echartsArr.push(echarts.init(echartsElement[i]))}console.log('打印图表元素数组echartsArr', echartsArr)// 将获得的这些图表转换为图片的base64编码const echartImgArr = []for (let j = 0; j < echartsArr.length; j++) {// chart1.getDataURL({ type: 'png', backgroundColor: '#07175f' });echartImgArr.push(echartsArr[j].getDataURL({ type: 'png', backgroundColor: '#07175f' }))}console.log('打印图表图片base64eechartImgArr', echartImgArr)// 组织图片的编码数据var dataArr = []dataArr = { event: echartImgArr[0], tiem: echartImgArr[1], serve: echartImgArr[2], unloadOil: echartImgArr[3] }// console.log('打印出整理好的数据dataArr', dataArr)// 将获取的base64传给后台this.axios({url: 'http://xxx.cn/compute/download/getimg',method: 'post',// dataType: 'JSON',data: dataArr}).then(res => {console.log('发送了得到后端返回的消息', res)}).catch(res => {console.error('失败', res)})}
打印结果:
可以发现每个图表都默认含有echarts这个名称
补充:
前端img标签可以直接识别base64字符并转换为图片,
base64在浏览器输入也可直接打开
<img src="image1的值">
用于测试的的图片 即 image1转换后的代码为
这一张图片的base64也太大了


