这个问题已经被问了很多次,但我只是不明白为什么这种情况会发生在我身上。
基本上,我有一个画布和一个图像,当我尝试这样做时:
var canvas = document.getElementById('somecanvas');
var ctx = canvas.getContext('2d');
var someimage = document.createElement('img');
someimage.setAttribute('src', 'img/someimage.png');
someimage.onload = function(){
ctx.drawImage(someimage, 0, 0, canvas.width, canvas.height);
data = ctx.getImageData(0,0,canvas.width,canvas.height);
}
我得到了难看的东西:
"未捕获的 DOMException:无法在“CanvasRenderingContext2D”上执行“getImageData”:画布已被跨源数据污染。
在 HTMLImageElement.someimage.onload"
我应该提到的是,我对编程相当陌生,对于 javascript 更是如此。当我从 file:\\ 运行它时应该发生这种情况吗?
我还没有发现有人遇到与我完全相同的问题,人们对其他问题的解释与托管图像的服务器有关。但在这种情况下,它没有托管在服务器上,所以我对它是如何工作的感到困惑。或者更确切地说,不起作用。
出于安全原因,如果您尝试执行某些操作(其中包括画布图像绘制),如果您使用file://
URL.
您确实应该从本地 HTTP 服务器提供页面和图像,以避免这些限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)