有没有办法在画布上选择一个区域的颜色和剪辑?
我想能够剪辑一个未定义的区域,所有像素之间唯一的共同点是它们都有相同的颜色。
谢谢
最佳答案
Live Demo
下面是一种选择颜色的方法想怎么做就怎么做。我传递一个我想找到的颜色,在每个像素上迭代并删除匹配的颜色,因为我不确定你说的剪辑是什么意思,我假设你是指删除。不过,请注意,在大图像上,这种方法将是缓慢的。
// 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.
就像西蒙指出的,上面的代码会得到准确的颜色。下面将获取近似颜色,如果颜色重叠或非常接近,这是很好的。
Demo 2 with approximation