保存客户端生成的图像按钮上单击
Save Client Side Generated Image on Button Click
我有一个IgniteUI igDataChart,我想保存到磁盘作为图像。您不能右键单击图表并保存图像,因为它使用了几个画布。然而,图表确实有一个export image方法,该方法将获取整个图表图像并将其返回到javascript变量中。
我想在点击按钮时自动将此文件保存到用户的下载文件夹。如果这是一个服务器端图像,我可以简单地将用户引导到适当的url,但它不是。
用户如何下载这个客户端生成的png图像的图表上的一个按钮点击?我需要一个跨浏览器的解决方案
JSFIDDLE
$(function () {
$("#exportBtn").click(function(){
//returns an image DOM element;
var pngImage = $("#chart").igDataChart("exportImage");
//now i need to download the image
});
});
这个解决方案提供了更好的浏览器支持,可以分配给一个按钮。http://jsfiddle.net/koo2hv5t/7/
- 检查blob支持(您可以为旧浏览器或服务器端后退添加消息)
- 等待动画结束
- 用
igDataChart
将图表复制为dataURL格式 - 用
Util.dataURLToBlob
从https://github.com/ebidel/filer.js转换成blob 保存blob到一个文件与
saveAs
从https://github.com/eligrey/FileSaver.js//check support try { var isFileSaverSupported = !! new Blob; } catch (e) {} setTimeout(function () { //add data to url function downloadCanvas(link, canv, filename) { if (isFileSaverSupported) { saveAs(Util.dataURLToBlob(canv.src), filename); } } $("#exportBtn").click(function () { downloadCanvas(this, $("#chart").igDataChart("exportImage", 800, 600), 'test.png'); }); }, 1000); //wait till animation end
您可以按照以下方式进行:
- 等待动画结束
- 复制最后一个 中的所有画布
将数据分配给url(而不是按钮)
setTimeout(function () { var c = $("#chart canvas"); //get handle to all canvas var ctx = c[c.length - 1].getContext('2d'); for (i = 0; i < c.length - 1; i++) { //add all canvas to the last one ctx.drawImage(c[i], 0, 0); } for (i = 0; i < c.length - 1; i++) { //remove the duplicates c[i].remove(); } //add data to url function downloadCanvas(link, canv, filename) { link.href = canv.toDataURL(); link.download = filename; } $("#dl1").click(function () { downloadCanvas(this, c[2], 'test.png'); }); }, 1000); //wait till animation end
相关文章:
- 如何隐藏按钮单击事件上的占位符
- 从Web服务器下载图像按钮单击使用JavaScript
- 在SweetAlert中传递ASP.NET按钮单击事件
- 单选按钮单击可刷新/更改网站的小区域
- 调用按钮单击事件 ajax 加载的用户控件
- 附加 jQuery 代码以在加载和按钮单击时运行
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 按钮单击服务器单击
- 触发单选按钮单击,并在页面刷新时记住选择
- 如何使用 javascript 而不是使用控制器中的方法在 rails 中呈现部分按钮单击
- jQuery UI 选项卡 - 将参数设置为下一个/上一个按钮单击
- 如何在 Angular JS 中的按钮单击上添加类
- 当元素上有多个类时触发按钮单击事件
- 如何在 HTML 中的按钮单击上更改图像(IMG URL 每次来自服务器)
- 如何使用javascript刷新我的html页面时清除按钮单击
- 阻止后退按钮 - 单击按钮时忽略
- 如何制作按钮.单击“开始时不运行”
- Rails:尝试在按钮单击时渲染部分
- 在页面加载时调用函数,在按钮单击时再次调用函数,但参数不同
- 如何在服务器端的文本中添加按钮单击事件