Javascript 是否可以一次获取ImageData,然后在特定位置提取数据?

Javascript 是否可以一次获取ImageData,然后在特定位置提取数据?,javascript,image,html,canvas,Javascript,Image,Html,Canvas,为了从特定坐标的图像中获得颜色,我使用了这个答案。然而,在微软的第56页上,它说getImageData必须使用一次,因为来自图形卡的调用非常密集。他们给出了一个如何做的例子,但这是为了分析整个画面 有没有一种方法可以只使用一次getImageData,然后只分析来自特定x和y坐标的数据,就像我说的5个随机位置 编辑:对于检查每个像素,示例执行以下操作: var imageData = ctx.getImageData(0, 0, width, height); var inputData =

为了从特定坐标的图像中获得颜色,我使用了这个答案。然而,在微软的第56页上,它说getImageData必须使用一次,因为来自图形卡的调用非常密集。他们给出了一个如何做的例子,但这是为了分析整个画面

有没有一种方法可以只使用一次getImageData,然后只分析来自特定x和y坐标的数据,就像我说的5个随机位置

编辑:对于检查每个像素,示例执行以下操作:

var imageData = ctx.getImageData(0, 0, width, height);
var inputData = imageData.data;

for(var y = 0; y < height; y++) {
    for (car x = 0; x <width; x++) {
       var r = inputData[i+0];
var g = inputData[i+1];
var b = inputData[i+2];
var-imageData=ctx.getImageData(0,0,宽度,高度);
var inputData=imageData.data;
对于(变量y=0;y对于(汽车x=0;x这很容易做到,请参见以下内容

var imageData = ctx.getImageData(0, 0, width, height);
var inputData = imageData.data; 

var pData = (~~objectx + (~~objecty * width)) * 4;
var r = inputData[pData],
    g = inputData[pData + 1],
    b = inputData[pData + 2],
    a = inputData[pData + 3];

~
只是做
Math.floor
的一种更快的方法。剩下的应该是很简单的。只需将
objectx
objecty
更改为您需要的任何值,并继续检查
输入数据
,只要图像没有更改,就无需再次
获取图像数据

你可以更详细一点吗请….?是的,你可以使用getImageData一次,并且可以对特定的x和y进行n次分析,因为图像数据将存储在数组变量中,并且在为数组指定其他值之前不会更改。为了更清楚,我编辑了我的问题。我希望它能帮助你,它可以工作太棒了。它不仅可以工作,而且如果你阅读了代码,它还解释了imageData是如何工作的。太棒了!
var imageData = ctx.getImageData(0, 0, width, height);
var inputData = imageData.data; 

var pData = (~~objectx + (~~objecty * width)) * 4;
var r = inputData[pData],
    g = inputData[pData + 1],
    b = inputData[pData + 2],
    a = inputData[pData + 3];