通过Js将ECharts导出为图片

1、ECharts自带导出功能

设置工具栏属性,saveAsImage即可出现下载图标,点击下载为png图片

toolbox: {
                feature: {
                    dataZoom: {
                        yAxisIndex: 'none'
                    },
                    restore: {},
                    saveAsImage: {}
                }
            },

2、JS方式

官网API说明:https://echarts.apache.org/zh/api.html#echartsInstance.getDataURL

上js:

说明:按照官网说明、个人也试了下,通过getDataURL获取图片Base64信息后,不需要再转Blob

一开始下载的图片没有底色,后来看了下官网说明,给getDataURL添加参数后,即可设置底色。

var task_year_chart = document.getElementById('task_year_chart');
        function downLoad() {
            //var picBase64Info = echarts.init(task_year_chart).getDataURL();
            //alert(picBase64Info);

            let content = echarts.init(task_year_chart).getDataURL({'backgroundColor':'#fff'});

            let aLink = document.createElement('a');
            //let blob = this.base64ToBlob(content);

            let evt = document.createEvent("HTMLEvents");
            evt.initEvent("click", true, true);
            aLink.download = "导出.png";
            aLink.href = content;
            aLink.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));
        }

        function base64ToBlob(code) {
            let parts = code.split(';base64,');
            let contentType = parts[0].split(':')[1];
            let raw = window.atob(parts[1]);
            let rawLength = raw.length;

            let uInt8Array = new Uint8Array(rawLength);

            for (let i = 0; i < rawLength; ++i) {
                uInt8Array[i] = raw.charCodeAt(i);
            }
            return new Blob([uInt8Array], { type: contentType });
        }

 

你可能感兴趣的:(前台脚本,js,ECharts,导出)