我正在开发一个极简主义的图像创建项目,我需要能够在浏览器中创建在服务器上反过来使用的图像。到目前为止,Canvas.toDataUrl()
方法已经满足了我们的需求,但我刚刚学会了Canvas.toBlob()
方法,这将更方便。
似乎toBlob()
方法对规范来说是新的几个月(我找不到任何直接引用的方法。)
哪些浏览器支持toBlob
,更重要的是哪些版本的浏览器包含该方法的集成?此外,是否支持此功能“buggy”或正在开发任何主流浏览器?
更新
8个月前我问了这个问题。我已经提交了我之前提到的项目,等待canvas.toBlob()
方法状态的任何更新。从我在网上收集的内容来看,toBlob()
的实现似乎在某些浏览器中得到了应用。
我再次问,开始集成HTML5画布对象的浏览器中的canvas.toBlob()
方法是多么普遍,哪些版本的浏览器是第一个集成此支持的?
答案 0 :(得分:35)
toBlob()
msToBlob()
请注意,此答案最初写于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
然而,看起来甚至这个库在所有浏览器中都不起作用,因为它
“需要BlobBuilder支持才能运行,这在所有方面都不存在 浏览器“
答案 2 :(得分:6)
canvas.toBlob()函数有一个很棒的JavaScript实现,还包括本机FireFox mozGetAsFile()函数:
答案 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)