首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HTML画布到blob到IE9中的可下载文件,10

HTML画布到blob到IE9中的可下载文件,10
EN

Stack Overflow用户
提问于 2013-11-01 22:55:18
回答 1查看 6.5K关注 0票数 7

我试图找到一种干净一致的方法来下载画布的内容作为图像文件。

对于Chrome或Firefox,我可以执行以下操作

代码语言:javascript
运行
复制
// Convert the canvas to a base64 string
var image = canvas.toDataURL();
image = image.replace(/^data:[a-z]*;/, 'data:application/octet-stream;');

// use the base64 string as the 'href' attribute 
var download = $('<a download="' + filename + '" target="_blank" href="' + image + '">');

由于上面的内容在IE中不起作用,所以我尝试用'window.navigator.msSaveOrOpenBlob‘函数构建一个Blob。

代码语言:javascript
运行
复制
var image = canvas.toDataURL();
image = image.replace(/^data:[a-z]*;,/, '');

// Convert from base64 to an ArrayBuffer
var byteString = atob(image);
var buffer = new ArrayBuffer(byteString.length);
var intArray = new Uint8Array(buffer);
for (var i = 0; i < byteString.length; i++) {
    intArray[i] = byteString.charCodeAt(i);
}

// Use the native blob constructor
blob = new Blob([buffer], {type: "image/png"});

// Download this blob
window.navigator.msSaveOrOpenBlob(blob, "test.png");

在上面的示例中,我真的需要将画布转换为base64,base64转换为ArrayBuffer,最后从base64转换为blob吗?(火狐有一个“canvas.toBlob”功能,但这在IE中是不可用的)。而且,这只适用于IE10,而不是IE9。

有谁对Chrome、Safari、Firefox、IE9和IE10的解决方案有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-02 03:59:34

是的,你必须做所有额外的步法。

Chrome和FF中的toBlob支持是最近才出现的,尽管它已经在规范中出现了好几年。最近,当MS制造IE9和10的时候,它甚至还没有出现在雷达上。

不幸的是,MS并没有改变IE9或IE10画布实现的意图,这意味着它们将以永恒的方式存在,存在着bug和缺失的部分。(IE10画布有几个IE9没有的bug,这些bug在IE11中再次修复。就像这块宝石。,这是一个真正的摇摇欲坠。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19736726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档