谷歌浏览器从本地图像中玷污了画布

时间:2016-09-12 21:31:21

标签: javascript html html5 canvas

我正在尝试使用html 5 canvas元素制作一个vanilla JavaScript游戏,为了制作基于颜色的命中框,我需要从画布上的某些位置获取图像数据。每当我使用getImageData()时,我都会收到此错误:

  

Uncaught SecurityError:无法执行' getImageData' on' CanvasRenderingContext2D':画布受到跨源数据的污染。

正在从本地文件中提取画布上显示的所有图像。有什么方法可以让我在Chrome上运行吗?

我通过在页面上放置html图像标记并使用context.drawImage(*img id, x, y*);

来绘制图像

3 个答案:

答案 0 :(得分:1)

启动本地服务器可能是更好的方法。 Chrome保持安全。

cd path/to/files
python -m SimpleHTTPServer

将浏览器指向

http://localhost:8000

original answer来自@gman

答案 1 :(得分:0)

CORS。您可以使用--allow-file-access-from-files启动chrome以进行开发,然后从托管该站点的同一服务器加载文件,这样就没有问题。请注意,此标志会更改chrome的安全设置。

答案 2 :(得分:0)

图片转换为Base64 ,然后使用图像标记,即可在不更改任何安全设置的情况下解决此问题