在 ECharts 中导出图片,常见有几种方式,下面按「使用场景」给你总结:
ECharts 提供了 toolbox 组件,可以直接在图表上点按钮保存图片。
option = {
toolbox: {
feature: {
saveAsImage: {
name: '图表名称', // 导出文件名
type: 'png', // png / jpeg
backgroundColor: '#fff'
}
}
},
// 其他配置...
};
✅ 优点:零代码、用户可操作
❌ 缺点:依赖浏览器交互
const chart = echarts.init(document.getElementById('main'));
chart.setOption(option);
const dataURL = chart.getDataURL({
type: 'png',
pixelRatio: 2,
backgroundColor: '#fff'
});
const a = document.createElement('a');
a.href = dataURL;
a.download = 'chart.png';
a.click();
✅ 适合:按钮导出、自动导出
chart.getDataURL({
type: 'png',
pixelRatio: 2,
backgroundColor: '#fff'
});
如果需要 Blob:
fetch(dataURL)
.then(res => res.blob())
.then(blob => {
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'chart.png';
a.click();
});
如果需要在 后端导出(如定时任务):
puppeteer + 无头 Chromenode-echartsecharts + canvas(Node 端)示例(puppeteer):
const buffer = await page.screenshot();
pixelRatio: 2 // 或 3
backgroundColor: '#fff'
确保:
chart.setOption(option);
// 等动画结束或 setTimeout
| 场景 | 推荐方式 |
|---|---|
| 用户手动保存 | toolbox |
| 页面按钮导出 | getDataURL |
| 后端批量 | puppeteer |
| 高清导出 | pixelRatio |
如果你能告诉我:
我可以直接给你一套完整代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。