我正在尝试将HTML5画布的内容转换为png图像。
问题是画布包含一个未在本地托管的图像,因此我收到了安全错误。
我没有选择在本地托管图像,有没有其他方法可以捕获canvas元素中的内容?
谢谢!
答案 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这个插件我就可以了。