Я просто изучаю, как использовать элемент холста HTML5. Мне удалось нарисовать прямоугольники, вызвать getImageData
, манипулировать пикселями, а затем putImageData
, чтобы увидеть, как прямоугольники меняют цвет, и т. д.
Теперь я пытаюсь загрузить изображение на холст, я попал в затруднительное положение. После вызова drawImage
в контексте холста fillRect
рисует только области, в которых нет изображения, например, рисует прямоугольники за изображениями, даже если он вызывается после drawImage
. Кроме того, putImageData
перестает работать, даже на видимых областях, содержащих прямоугольники, мои манипуляции с пикселями больше не происходят. Если я закомментирую строку с помощью drawImage
, она снова сработает.
Что я хочу сделать, так это манипулировать пикселями изображения так же, как я делал с прямоугольниками. Есть ли причина, по которой это не сработает?
Нарисуйте код изображения:
var img = new Image();
img.onload = function () {
//comment out the following line, everything works, but no image on canvas
//if it's left in, the image sits over the rectangles, and the pixel
//manipulation does not occur
context.drawImage(img, 0, 0, width / 2, height / 2);
}
img.src = path;
Код рисования прямоугольников:
for (var i = 0; i < amount; i++)
{
x = random(width - size);
y = random(height - size);
context.fillStyle = randomColor();
context.fillRect(x, y, size, size);
}
Манипулировать кодом пикселей:
var imgd = context.getImageData(0, 0, width, height);
var pix = imgd.data;
//loop through and do stuff
context.putImageData(imgd, 0, 0);