有没有一种更有效的方法来迭代来自getImageData的像素

时间:2016-07-26 08:25:13

标签: javascript arrays html5 canvas

我循环遍历图像中的所有像素,检查像素是否为某种颜色然后将所述像素设置为黄色(r = 250,g = 250,b = 250),否则我将其设置为黑色(r = 0,g = 0,b = 0)。

你会看到下面进行颜色比较的代码是一种非常原始的方法,但它很适合我的用例。

我目前只使用单个for循环,请参阅下面的代码。

var cavas = $("#canvas"),
    context = canvas.getContext("2d"),
    imageData = context.getImageData(),
    data = imageData.data; 

    var r, g, b, total;

    var MAX = SOME_CONST,
        MIN = SOME_OTHER_CONST;

for (var i = 0, max = data.length; i < max; i +=4) {

     r = data[i];
     g = data[i+1];
     b = data[i+2];
     total = r + g + b;

     if (total < MIN || total > MAX) {
         //This is the colour i'm after
         data[i] = 255;
         data[i+1] = 255;
         data[i+2] = 0;
     }
     else {
         data[i] = 0;
         data[i+1] = 0;
         data[i+2] = 0;
     }
}

是否有更有效的方法来执行此操作?

0 个答案:

没有答案