HTML5のcanvas要素の使い方を学んでいます。長方形の描画、呼び出し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);
}
Maniuplateピクセルコード:
var imgd = context.getImageData(0, 0, width, height);
var pix = imgd.data;
//loop through and do stuff
context.putImageData(imgd, 0, 0);