html5画布:按颜色剪辑

问题描述:

有什么方法可以按颜色选择画布上的某个区域并剪辑它? 我想能够剪辑一个未定义的aread,所有像素之间唯一共同之处在于它们都具有相同的颜色。 感谢html5画布:按颜色剪辑

+0

你说的'clip'意思? – Loktar

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

+1

除非所讨论的图像是像素完美的,否则它可能值得逼近你的条件,即使是大量的:http://jsfiddle.net/CqTEV/9/ –

+1

@SimonSarris是的我认为这一点,我注意到了由于颜色流失并丢弃了确切的值,因此在我的矿区选择了边缘。我把你的js小提琴添加到答案并给你信用。 – Loktar

+0

@SimonSarris伟大的脚本。它工作完美。 :-) 谢谢 –