Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Холст html5: отсечение по цвету

Автор вопроса: Amit HaginОтветов: 1

есть ли способ выбрать область на холсте по цвету и обрезать ее? Я хочу иметь возможность обрезать неопределенную площадь, что единственное, что общего между всеми пикселями, это то, что все они имеют одинаковый цвет. Благодарность

  • Что вы подразумеваете под clip этим? Loktar 08.09.2011

canvashtmlclippixel

Ответы

Ответ 1 · рейтинг 4 · Loktar

Текущая демонстрация

Ниже приведен способ выбора цвета... и делайте с ним все, что хотите. Я передаю цвет, который хочу найти, перебирая каждый пиксель и удаляя соответствующий цвет, поскольку я не уверен, что вы имели в виду под отсечением, я предположил, что вы имеете в виду удаление. Однако учтите, что для больших изображений этот метод будет медленным.

// 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 с приближением

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы