javascript - 本地跨源数据错误

标签 javascript html canvas getimagedata

我正在尝试用 JavaScript 制作游戏,并且需要从图像中获取像素数据。我正在使用 getImageData().data;它在 Internet Explorer 上运行良好,但在 Chrome 上我收到此错误:

Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.

我一直在寻找解决方案,但似乎没有任何效果,有人有好主意吗?

这是我的代码:` 变量 宽度=600, 高度 = 400, 图像, Canvas , ctx;

    function main() {
        canvas = document.createElement("canvas");
        ctx = canvas.getContext("2d");
        canvas.width = width;
        canvas.height = height;
        document.body.appendChild(canvas);

        init();
        loop();

    }

    function init() {
        img = new Image();
        img.src = "test.png";


    }

    function update() {

    }

    function render() {
        ctx.drawImage(img, 0, 0);
        var data = ctx.getImageData(10, 10, 1, 1).data;
        console.log(data);

    }

    function loop() {
        window.requestAnimationFrame(loop);

        update();
        render();
    }

    main();`

该文件在本地运行,而不是在服务器上运行。

最佳答案

如果您使用 file://...加载页面或文件,它也会触发 CORS 问题。

在本地测试时,请始终使用本地服务器,以便可以从本地主机加载文件。

还有一个附带问题:记住对图像使用 onload 处理程序:

function init() {
    img = new Image();
    img.onload = ...   // don't start loop without it...
    img.src = "test.png";
}

关于javascript - 本地跨源数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430507/

相关文章:

javascript - 将元素设置为适合 panzoom.js 中的容器

canvas - 使用 createjs 在 Canvas 上绘图是别名

javascript - 如何对 Canvas 上的形状进行排序 - JavaScript

javascript - 单击箭头按钮时如何更快地移动矩形?

javascript - 对象未显示在传单 AngularJS 上

我想不通的 JavaScript 难题

javascript - 用脚本中断html页面的刷新过程

javascript - 我的按钮 id 在 javascript 中调用时有效,但 onserverclick 事件无法在 sql 上存储和更新数据

javascript - Angular.js 默认选择不适用于 ng-model

javascript - 我想获取 HTML 表中每个 href 单击的第一列行的值