将Echarts图表保存为图片【使用自定义下载按钮,不用Echarts自带下载功能】

        因为前端UI设计的Echarts图表的下载按钮是自定义的,但是Echarts自带工具栏的图表下载按钮是固定的不能改变,所以我们需要另写一个方法:

具体做法如下:

1、首先创建一个div来展示我们的Echarts图表

<div id="main" style="height: 800px;width: 800px;margin-left: 300px;">

2、创建自定义图片的下载按钮

<a href="javascript:void(0)" class="savepng" ><img onclick="downloadImpByChart('main')"  src="图片路径" alt="下载"></a>

3、【重头戏来了】写js方法代码

function downloadImpByChart(main){
        var myChart = echarts.getInstanceByDom(document.getElementById(main));
        var url = myChart.getConnectedDataURL({
            pixelRatio: 5,  //导出的图片分辨率比率,默认是1
            backgroundColor: '#fff',  //图表背景色
            excludeComponents:[  //保存图表时忽略的工具组件,默认忽略工具栏
                'toolbox'
            ],
            type:'png'  //图片类型支持png和jpeg
        });
        var $a = document.createElement('a');
        var type = 'png';
        $a.download = myChart.getOption().title[0].text + '.' + type;
        $a.target = '_blank';
        $a.href = url;
        // Chrome and Firefox
        if (typeof MouseEvent === 'function') {
            var evt = new MouseEvent('click', {
                view: window,
                bubbles: true,
                cancelable: false
            });
            $a.dispatchEvent(evt);
        }
        // IE
        else {
            var html = ''
                + '<body style="margin:0;">'
                + '<img src="' + url + '" style="max-100%;" title="' +  myChart.getOption().title[0].text + '" />'
                + '</body>';
            var tab = window.open();
            tab.document.write(html);
        }
    };

完整代码:

<div id="main" style="height: 800px;width: 800px;margin-left: 300px;">

<a href="javascript:void(0)" class="savepng" ><img onclick="downloadImpByChart('main')"  src="你自定义的图片路径" alt="下载"></a>

<script>
    function downloadImpByChart(main){
        var myChart = echarts.getInstanceByDom(document.getElementById(main));
        var url = myChart.getConnectedDataURL({
            pixelRatio: 5,  //导出的图片分辨率比率,默认是1
            backgroundColor: '#fff',  //图表背景色
            excludeComponents:[  //保存图表时忽略的工具组件,默认忽略工具栏
                'toolbox'
            ],
            type:'png'  //图片类型支持png和jpeg
        });
        var $a = document.createElement('a');
        var type = 'png';
        $a.download = myChart.getOption().title[0].text + '.' + type;
        $a.target = '_blank';
        $a.href = url;
        // Chrome and Firefox
        if (typeof MouseEvent === 'function') {
            var evt = new MouseEvent('click', {
                view: window,
                bubbles: true,
                cancelable: false
            });
            $a.dispatchEvent(evt);
        }
        // IE
        else {
            var html = ''
                + '<body style="margin:0;">'
                + '<img src="' + url + '" style="max-100%;" title="' +  myChart.getOption().title[0].text + '" />'
                + '</body>';
            var tab = window.open();
            tab.document.write(html);
        }
    };
</script>

效果:

 参考自:ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave由于鼠标移动速度过快导致问题解决办法 - 走看看

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值