我需要一种方法来查找具有特定颜色的每个像素的坐标。我可以遍历整个图像中的每个像素并检查它是否匹配,但这似乎不是非常有效。还有更好的方法吗?
答案 0 :(得分:2)
您必须遍历数组,因为这是评估画布中所有像素的唯一方法。
但是,你可以使用32位整数(类型)数组而不是标准的8位数组 - 这将快很多倍:
var idata = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height),
buffer32 = new Uint32Array(idata.data.buffer),
len = buffer32.length,
i = 0, x, y,
color = 0xffffffff; /// white color (ABGR format on little-endian systems)
for(; i < len; i++) {
if (buffer32[i] === color) {
/// convert i to x/y position here
x = i % idata.width;
y = (i / idata.height)|0;
}
}