哪些浏览器(和版本)支持Canvas.toBlob方法?

时间:2011-07-18 16:22:02

标签: html html5 html5-canvas

我正在开发一个极简主义的图像创建项目,我需要能够在浏览器中创建在服务器上反过来使用的图像。到目前为止,Canvas.toDataUrl()方法已经满足了我们的需求,但我刚刚学会了Canvas.toBlob()方法,这将更方便。

似乎toBlob()方法对规范来说是新的几个月(我找不到任何直接引用的方法。)

哪些浏览器支持toBlob,更重要的是哪些版本的浏览器包含该方法的集成?此外,是否支持此功能“buggy”或正在开发任何主流浏览器?

更新

8个月前我问了这个问题。我已经提交了我之前提到的项目,等待canvas.toBlob()方法状态的任何更新。从我在网上收集的内容来看,toBlob()的实现似乎在某些浏览器中得到了应用。

我再次问,开始集成HTML5画布对象的浏览器中的canvas.toBlob()方法是多么普遍,哪些版本的浏览器是第一个集成此支持的?

5 个答案:

答案 0 :(得分:35)

2016年2月以来,这些浏览器支持toBlob()

请注意,此答案最初写于2011年。原始答案/编辑如下。


toBlob() 真的是新的,我不建议在消费者应用中使用它,除非您可以明确要求他们使用特定的浏览器(或者控制环境)。

toBlob()已在May 12th上添加,并且定义的功能有限。它每晚都不存在于Chrome中,每晚都是Firefox,也不存在IE9。

值得注意的是,Firefox确实具有功能性mozGetAsFile

甚至还有任何discussion for adding it to Chrome

Firefox.的讨论他们已经决定等到规范在他们尝试实施之前更加明确。

toBlob()的规范非常模糊,许多内部问题仍未解决。他们甚至不确定允许典型的toBlob()使用什么参数。


2012年4月10日更新

toBlob仍然不受支持。它仍然不存在于Chrome Canary(夜晚),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(目前是金丝雀)

答案 1 :(得分:7)

如果你可能需要它,这个js文件在已经不支持它的浏览器中实现toBlob函数:https://github.com/eligrey/canvas-toBlob.js

作者的post和扩展的源代码here

然而,看起来甚至这个库在所有浏览器中都不起作用,因为它

  

“需要BlobBuilder支持才能运行,这在所有方面都不存在   浏览器“

答案 2 :(得分:6)

canvas.toBlob()函数有一个很棒的JavaScript实现,还包括本机FireFox mozGetAsFile()函数:

https://github.com/blueimp/JavaScript-Canvas-to-Blob

答案 3 :(得分:1)

太糟糕了,这个功能不是更远,但很高兴知道它的状态(西蒙)。

在此期间,这个answer提供了一个很好的解决方法,通过消除base64编码的dataUri字符串的膨胀来实现二进制上传的网络效率。显然它只受到最新浏览器的支持,但是如果你正在编写扩展或者准备好接受对前沿浏览器的依赖,那么它可能是一个不错的选择。

答案 4 :(得分:1)

距离我第一次提出这个问题已经快8年了。考虑到我仍然会遇到点滴滴答,并且这个问题通常位于Google搜索的顶部,所以我想对Canvas.toBlob(...)的状态及其实现进行更新。

下表:

                   |             | Version Support 
                   | Version     | for 'Quality'
Browser            | Implemented | Parameter 
-------------------+-------------+-----------------
Android Webview)   |          50 |          50
Chrome (Desktop)   |          50 |          50
Chrome (Mobile)    |          50 | Unsupported 
Edge (Desktop)     | Unsupported | Unsupported 
Edge (Mobile)      | Unsupported | Unsupported 
Firefox (Desktop)  |          19 |          25
Firefox (Mobile)   |           4 |          25
Internet Explorer* |          10 | Unsupported 
Opera (Desktop)    |          37 |         Yes
Opera (Mobile)     |          37 | Unsupported 
Safari (Desktop)   |          11 | Unsupported 
Safari (Mobile)    | Unsupported | Unsupported 
Samsung Internet   |         5.0 | Unsupported 

* Internet Explore implements "msToBlob" rather than the "toBlob" function signature.

(来源:https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob