есть ли способ выбрать область на холсте по цвету и обрезать ее? Я хочу иметь возможность обрезать неопределенную площадь, что единственное, что общего между всеми пикселями, это то, что все они имеют одинаковый цвет. Благодарность
Холст html5: отсечение по цвету
Ответы (1)
Ниже приведен способ выбора цвета... и делайте с ним все, что хотите. Я передаю цвет, который хочу найти, перебирая каждый пиксель и удаляя соответствующий цвет, поскольку я не уверен, что вы имели в виду под отсечением, я предположил, что вы имеете в виду удаление. Однако учтите, что для больших изображений этот метод будет медленным.
// 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.
И, как указал Саймон, приведенный выше код получит точный цвет. Ниже будет получен приблизительный цвет, что хорошо, если у вас есть цвета, перекрывающиеся или очень близкие друг к другу.
person
Loktar
schedule
08.09.2011
Если рассматриваемое изображение не является идеальным по пикселям, возможно, стоит приблизить ваши условные обозначения, даже на большую величину: jsfiddle .net/CqTEV/9
- person Simon Sarris; 08.09.2011
@SimonSarris да, я тоже об этом подумал, я заметил, что края не были выбраны в моем из-за растекания цвета и отбрасывания точных значений. Я добавлю вашу скрипку js к ответу и отдам вам должное.
- person Loktar; 08.09.2011
@Loktar Спасибо и тебе :-)
- person muhammed basil; 26.12.2013
clipэтим? - person Loktar   schedule 08.09.2011