canvas.toDataURL替代?

时间:2012-10-16 00:06:57

标签: javascript html5 canvas web

我正在尝试将HTML5画布的内容转换为png图像。

问题是画布包含一个未在本地托管的图像,因此我收到了安全错误。

我没有选择在本地托管图像,有没有其他方法可以捕获canvas元素中的内容?

谢谢!

3 个答案:

答案 0 :(得分:2)

除非你能使你的图像资源CORS友好,否则没有。

https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F

  

虽然您可以在画布中使用未经CORS批准的图像,   这样做会玷污画布。一旦画布被污染,你就不能   更长的拉出数据从画布中退出。例如,你不能   更长时间使用canvas toBlob(),toDataURL()或getImageData()   方法;这样做会引发安全错误。

编辑:当然,如果你不仅限于纯HTML5方法,你可以使用一些Flash / Crossdomain.xml技巧,但仍假设你可以控制服务于图像的服务器。

答案 1 :(得分:1)

猜猜在客户端没有办法解决这个问题,否则阻塞toDataURL的重点是什么呢?

也许你可以让服务器端脚本将外部图像转发给客户端,这样浏览器就不会知道它来自另一个域。 (不管怎样它都不需要,因为你不能从服务器端使用浏览器的凭证)

只需将图片网址作为get参数发送,当然,根据图片文件修改内容类型标头,然后将所有那些脏字节扩散到响应内容上,例如'em bitches deserve。

答案 2 :(得分:0)

如果你不反对使用jQuery这个插件我就可以了。

http://www.maxnov.com/getimagedata/