Нет, в одной строке кода нет способа изменить один пиксель на один цвет. Ну, вроде как.
Как отметил Петтери, есть способ изменить каждый пиксель напрямую, что, вероятно, приведет к тому, что вы хотите. Я предполагаю, что вы хотите изменить один пиксель на один цвет, а следующий пиксель на другой цвет и т. Д.
Например, вот функция обесцвечивания холста. То, что он делает, берет каждый пиксель и усредняет значения RGB, чтобы быть нейтральным по цвету (не иметь насыщенности). В результате получается изображение в градациях серого.
function grayscale() {
var imageData = ctx.getImageData(0,0,can.width, can.height);
var pixels = imageData.data;
var numPixels = pixels.length;
ctx.clearRect(0, 0, can.width, can.height);
for (var i = 0; i < numPixels; i++) {
var average = (pixels[i*4] + pixels[i*4+1] + pixels[i*4+2]) /3;
// set red green and blue pixels to the average value
pixels[i*4] = average;
pixels[i*4+1] = average;
pixels[i*4+2] = average;
}
ctx.putImageData(imageData, 0, 0);
}
Как видите, он повторяется по каждому пикселю. Можно легко изменить, чтобы каждый пиксель был изменен на одну строку.
Вместо:
pixels[i*4] = average;
pixels[i*4+1] = average;
pixels[i*4+2] = average;
Вы бы написали:
// Take out 3 values starting at i*4 and add the new RGB for that pixel
pixels.splice(i*4,3,REDVALUE,GREENVALUE,BLUEVALUE);
Что бы выполнить то, что вы хотели. Это не самый эффективный способ под солнцем, но он достиг бы вашей цели:)