不使用.toDataUrl()将Canvas下载为图像

4

是否可以在不使用.toDataUrl()函数的情况下下载一个Canvas元素的(已编辑)图像?我测试过一些框架,但它们仍然使用这个函数。


3
HTMLCanvasElement的toBlob()方法创建一个Blob对象,该对象包含表示canvas元素中绘制内容的图像数据。可以使用该方法将canvas中的图像转换为文件形式进行存储或传输。该方法接受一个回调函数作为参数,当Blob对象创建完成时,该函数会被调用并以Blob对象作为参数。如果在生成Blob对象时出现错误,则会传递null值给回调函数。该方法还接受一个可选的MIME类型参数,默认值为'image/png'。 - dandavis
@dandavis 这是个好建议,请将其添加为答案。我相信它会帮助其他人。 - Mosh Feu
是的,非常感谢,我的问题现在是“blob不是一个函数”,但这是因为我的Chrome版本是49而不是50。 - Freshchris
1个回答

4
在较新的浏览器中,使用异步方法canvas.toBlob(callback, mimeType, qualityArgument);可以获得更大的图像和更快的性能。详细信息和兼容性请参见mdc文章(基本上支持IE10+)。与数据URL在许多浏览器和设备中面临的实际大小限制不同,blob没有这些限制,因此在支持的情况下,它会带来更好的用户体验。如果以后想将blob转换为dataURL,请使用FileReader.readAsDataURL(blob)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接