问题描述
我正在进行一个简约的图像创建项目,我需要能够在浏览器中创建一个在服务器上使用的 in-turn 的图像。到目前为止,Canvas.toDataUrl()
方法已经满足了我们的需求,但我刚刚了解到 Canvas.toBlob()
方法会更加方便。
看来,toBlob()
方法在几个月内是新的规范 (我添加时没有找到任何直接引用) 。
哪些浏览器支持 toBlob
,更重要的是哪些版本的浏览器包含了该方法的集成?此外,是否支持此功能”buggy” 或任何主要浏览器的开发?
UPDATE
8 个月前我问了这个问题。我提交了我之前提到的项目,等待有关 canvas.toBlob()
方法的状态的任何更新。从我可以在网上收集到的信息,toBlob()
的实现似乎在一些浏览器中被使用。
我再次询问,开始集成 HTML5 画布对象的浏览器中的 canvas.toBlob()
方法是多么普遍,哪些版本的这些浏览器是第一个集成此支持?
最佳解决思路
截至 2016 年 2 月,这些浏览器支持 toBlob()
-
IE10 作为前缀
msToBlob()
注意这个答案最初是在 2011 年写的。
toBlob()
真的是新的,我不建议在消费者应用程序中使用它,除非你可以明确地要求他们使用特定的浏览器 (或者控制环境) 。
toBlob()
已添加到 May 12th 上,功能有限 as-defined 。它不存在于 Chrome 的夜晚,firefox 每晚,也不是 IE9 。
值得注意的是,Firefox 确实有一个功能齐全的 mozGetAsFile
还没有任何 discussion for adding it to Chrome 。
对 Firefox. 的讨论他们决定等到规范更加清晰,然后才能实施。
toBlob()
的规范非常模糊,很多内部问题仍然没有解决。他们甚至不知道什么参数允许典型的 toBlob()
使用。
2012 年 4 月 10 日更新
toBlob 仍然不支持。 Chrome Canary(Nightly),Firefox Nightly 或 IE9 仍然不存在。
如果您想在 Chrome 明星观看更新,请执行以下操作:
http://code.google.com/p/chromium/issues/detail?id=67587
如果您想在 Firefox 中观看更新,请在此处订阅此错误:
https://bugzilla.mozilla.org/show_bug.cgi?id=648610
更新:截至 2016 年 2 月 21 日.toBlob 现在适用于 chrome 50(目前为金丝雀)
次佳解决思路
如果可能需要它,这个 js 文件在不支持它的浏览器中实现 toBlob 功能:https://github.com/eligrey/canvas-toBlob.js
但是,看起来这个 Library 在所有的浏览器中都不起作用
“requires BlobBuilder support to function, which is not present in all browsers”
第三种解决思路
有一个伟大的 JavaScript 实现的 canvas.toBlob() 函数,还包括本机 FireFox mozGetAsFile() 函数:
https://github.com/blueimp/JavaScript-Canvas-to-Blob
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。