2

有没有办法通过颜色在画布上选择一个区域并剪辑它?我希望能够剪辑一个未定义的区域,所有像素之间唯一的共同点是它们都具有相同的颜色。谢谢

4

1 回答 1

4

现场演示

下面是一种选择颜色的方法.. 并用它做任何你想做的事情。我传递了一种我想找到的颜色,遍历每个像素并删除匹配的颜色,因为我不确定你所说的裁剪是什么意思,我假设你的意思是删除。但是请注意,在大图像上,这种方法会很慢。

// Takes an array with 3 color components, rgb     
function removeColor(color){
    var canvasData = ctx.getImageData(0, 0, 256, 256),
        pix = canvasData.data;

    for (var i = 0, n = pix.length; i <n; i += 4) {
        if(pix[i] === color[0] && pix[i+1] === color[1] && pix[i+2] === color[2]){
             pix[i+3] = 0;   
        }
    }

    ctx.putImageData(canvasData, 0, 0);
}

removeColor([0,0,255]); // Removes blue.

就像西蒙指出的那样,上面的代码将获得确切的颜色。下面将获取近似颜色,如果颜色重叠或彼此非常接近,这很好。

演示 2 与近似值

于 2011-09-08T13:34:51.467 回答