ctx.getImageData 返回一个包含.data 属性的对象。
该数据属性是一个数组,其中已经包含您要查找的所有像素颜色。
// get the imageData object
var imageData=ctx.getImageData(0, 0, canvas.width, canvas.height);
// get the pixel color data array
var data=imageData.data;
data 数组是一个长数组,其中包含画布上每个像素的红色、绿色、蓝色和 alpha(不透明度)值。 data 数组的形状如下:
// top left pixel [0,0]
data[0]: Red value for pixel [0,0],
data[1]: Green value for pixel [0,0],
data[2]: Blue value for pixel [0,0],
data[3]: Alpha value for pixel [0,0],
// next pixel rightward [1,0]
data[4]: Red value for pixel [1,0],
data[5]: Green value for pixel [1,0],
data[6]: Blue value for pixel [1,0],
data[7]: Alpha value for pixel [1,0],
// and so on for each pixel on the canvas
...
您可以像这样在data 中获取任何 [x,y] 像素的位置:
// the data[] array position for pixel [x,y]
var n = y * canvas.width + x;
然后您可以像这样获取该像素的红色、绿色、蓝色和 alpha 值:
var red=data[n];
var green=data[n+1];
var blue=data[n+2];
var alpha=data[n+3];