Я только учусь использовать элемент HTML5 canvas.Я успешно рисовал прямоугольники, вызывал getImageData
, манипулировал пикселями, а затем putImageData
, чтобы увидеть, как прямоугольники меняют цвет, и т. Д.
Теперь я пытаюсь загрузить изображение в холст I 'мы наткнулись на препятствие.После вызова 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);