查找匹配给定颜色的HTML5画布的坐标

时间:2014-02-17 00:12:26

标签: html5 canvas html5-canvas

我需要一种方法来查找具有特定颜色的每个像素的坐标。我可以遍历整个图像中的每个像素并检查它是否匹配,但这似乎不是非常有效。还有更好的方法吗?

1 个答案:

答案 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;
    }
}