HTML5的getImageData功能不需要使用canvas。

5

是否有一种不使用画布就可以使用图像的getImageData方法的方式?我想要获取图像上鼠标位置的像素颜色。

1个回答

11

不行。

但是可以通过内存中的canvas获取图像数据,这很快也很容易:

var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
var img = document.getElementById('someImageId');
context.drawImage(img, 0, 0 );
var theData = context.getImageData(0, 0, img.width, img.height);

为了避免在每次点击时构建它,您可以保留theData变量。

请注意,如果图像来自另一个域,这将无法正常工作(因此,如果您使用file://而不是http://打开您的HTML文件,则无法正常工作)。


有趣...他们阻止从另一个域获取图像数据的原因是什么? - Shmiddty
3
这是为了防止XSS攻击。请阅读这篇文章这篇文章 - Denys Séguret
但是当尝试检索整数数组时可能会发生什么事情呢? - Shmiddty
1
所以...问题不在于getImageData可能存在漏洞,而是用于防止非法XSS的安全措施更像是一把大锤而不是手术刀? - Shmiddty
getImageData也会添加漏洞。在这种情况下,我认为他们把它包含进去是正确的。 - Denys Séguret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接