Если вы говорите о том, что для каждого пикселя нужно манипулировать изображением, которое вам нужно использовать .getImageData(x, y, width, height)
, это дает вам и объект, содержащий поле .data
, которое представляет собой массив RGBA каждого пикселя изображения, поэтому .data[0]
- это канал R первого пикселя, .data[1]
- канал G, .data[2]
B, .data[3]
канал Альфа, а затем .data[4]
- канал R второго пикселя.
Все в диапазоне 0-255, а не 0-1.
Вы можете установить эти значения цвета, может быть, вы хотите, чтобы ваш первый пиксель был синим, затем вы делаете это:
var img = Ctx.getImageData(0, 0, Canvas.width, Canvas.height);
img.data[0] = 0; // R
img.data[1] = 0; // G
img.data[2] = 255; // B
img.data[3] = 255; // A
КомуНарисуйте ваши измененные данные изображения, просто используйте Ctx.putImageData(img, x, y)
;
Ваше событие onclick будет выглядеть так:
button.Canvas = Canvas;
button.Ctx = CanvasContext;
button.addEventListener("click", function()
{
var img = this.Ctx.getImageData(0, 0, this.Canvas.width, this.Canvas.height);
// Do something to the image data here
this.Ctx.putImageData(img, 0, 0);
}, false);
Или
Вы можетепросто хотите нарисовать свое изображение на внеэкранном холсте, сделайте там все, что хотите, а затем перетащите его обратно на холст, который может видеть пользователь.Поскольку вы сказали, что вы новичок в JS, вот как вы создаете свой холст:
var newCanvas = document.createElement("canvas");
var newCtx = Canvas.getContext("2d");
этот холст не будет отображаться, если вы не хотите, поэтому просто используйте его как обычно и когда вы 'Закончив манипулирование изображением, просто нарисуйте его на главном холсте.