重点: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>
<-- 上传图片按钮 !-->
<div
class="btn"
@click="upImgData"
>
上传图片
</div>
</template>
一张图片
methods: {
// 上传图片
upImgData () {
var chart1 = echarts.init(document.getElementById('chart1'));
// var canvas = document.getElementsByTagName('canvas') // 获取所有图表的canvas
console.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也太大了