我如何从其他网站“getImageData”? SECURITY_ERR:DOM例外18

时间:2012-03-07 21:18:52

标签: javascript html5 canvas

我正在开发一个在线应用程序来处理图像。 使用本地文件(在服务器上)时,它可以正常工作,但是一旦我尝试使用其他来源,它就会中断。 其原因似乎是安全限制,来自whatwg

  

每当使用其他正确的参数调用其origin-clean标志设置为false的canvas元素的2D上下文的getImageData()方法时,该方法必须引发SECURITY_ERR异常。

所以我想知道我可以以某种方式解决这个问题吗? 这些图片都来自谷歌API,如果可以,我真的想跳过保存图片。

感谢。

1 个答案:

答案 0 :(得分:2)

由于您可能无法访问从中提取源图像的​​服务器,因此最好的办法是通过服务器代理文件。

基本上,您向服务器发送一个AJAX请求,其中包含您想要数据的图像的URL。您的服务器收到请求并代表您询问图像。获取文件后,然后base64对其进行编码并将数据发回给您。由于图像数据只是一个字符串,您可以从中创建一个图像对象,并通过canvas对其进行操作,而不必担心原始域。

如果您愿意使用jQuery,那么这里有一个非常棒的插件:http://www.maxnov.com/getimagedata/

我之前使用过此特定插件,效果非常出色。我会注意到您应该(必须)在您自己的服务器上托管代理服务器代码。您可以使用作者的appspot帐户,但它每天仅限于一定数量的查询,并且经常用完。作者解释了如何在此处托管代理代码:http://www.maxnov.com/getimagedata/#using-your-own-server