Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从<;中提取二进制或base64;img>;_Jquery_Canvas_Same Origin Policy - Fatal编程技术网

Jquery 从<;中提取二进制或base64;img>;

Jquery 从<;中提取二进制或base64;img>;,jquery,canvas,same-origin-policy,Jquery,Canvas,Same Origin Policy,在jQuery/javascript中显示img时,有没有办法访问完整的二进制表示(或其base64编码)?比如 <img id="myImage" src="http://someURL/someImage.png" /> 原因是:我想把另一个来源的图像放在画布上并修改它。 将源代码直接放在画布中(请参见),我什么也得不到(同源策略冲突?)。AJAX请求也有同样的问题 我可以(并且已经)修改服务器以允许新的外部源(CORS)。 它可以工作,但是这样的源是一个动态的本地IP,最好是

在jQuery/javascript中显示img时,有没有办法访问完整的二进制表示(或其base64编码)?比如

<img id="myImage" src="http://someURL/someImage.png" />
原因是:我想把另一个来源的图像放在画布上并修改它。 将源代码直接放在画布中(请参见),我什么也得不到(同源策略冲突?)。AJAX请求也有同样的问题

我可以(并且已经)修改服务器以允许新的外部源(CORS)。
它可以工作,但是这样的源是一个动态的本地IP,最好是纯客户端。

您可以在这里检查以从映像中获取二进制数据。

没有一个。您不能在客户端做任何事情来覆盖相同的源策略(除非您黑客攻击浏览器或自己制作,以防止浏览器在画布上设置污染标志(或者更确切地说是标志:-))

只要源图像的原点!==页面来源标准要求浏览器设置画布污染,除非源服务器接受来自其他来源的使用。客户端没有解决方案可以解决这个问题(出于“安全原因”)

如果图像参数是HTMLImageElement或 HTMLVideoElement,其来源与输入脚本的不同 原点,或者如果它是位图原点干净的HTMLCanvasElement 标志为false,或者如果它是CanvasRenderingContext2D对象 划痕位图的原点清除标志为false

资料来源:

如果是的话():

。。。如果划痕位图的原点清除标志设置为false,则 必须引发SecurityError异常

您可以选择:

  • 修改源服务器以提供
    访问控制允许源站
    (最小)标头(如您所做),然后使用图像标记中的属性(
    ,默认状态为
    匿名
    )-这只是一个请求,由服务器来接受它
  • 使用您自己的服务器作为代理从源服务器获取映像,并将其提供给同一来源的客户端(例如
    http://mysite/getImage.cgi|.aspx |.php |?src=其他站点/img
  • 修改浏览器…等:-P

  • 您可以自己对图像进行低级解析,但在任何情况下,您都需要通过文件API将图像“上载”到客户端,并从那里解析图像,这会给IMHO带来更大的不便(通过自己的服务器充当代理会更简单一些).

    这取决于使用canvasThanks的同源策略,但正如问题中所述,我正在寻找一种没有服务器端CORSThanks的跨源解决方案。我想[1]是我们的出路。
    $('#myImage).getBuffer()