XMLHttpRequest を使用して png ファイルをロードし、応答を使用してキャンバス オブジェクトに画像データを設定することで、Image オブジェクトの必要性を完全に排除し、ImageData に直接アクセスしたいと考えています。これまでのところ、私のコードは次のようになります。
var xhr = new XMLHttpRequest();
var context = document.createElement("canvas").getContext("2d"); // the context for the image we are loading
var display = document.getElementById("display").getContext("2d"); // the context of the canvas element in the html document
function load(event) {
var imagedata = context.createImageData(64, 64); // 64 = w, h of image
imagedata.data.set(new Uint8ClampedArray(this.response)); // the response of the load event
context.putImageData(imagedata,0,0); // put the image data at the top left corner of the canvas
display.drawImage(context.canvas, 0, 0, 64, 64, 0, 0, 64, 64); // draws a bunch of jumbled up pixels from my image in the top of my display canvas
}
xhr.addEventListener("load", load);
xhr.open("GET", "myimage.png");
xhr.responseType = "arraybuffer";
xhr.send(null);
ここで何が間違っていますか?Uint8ClampedArray への応答で ArrayBuffer を変換する際の問題ですか? 異なる配列タイプを使用する必要がありますか? それは XMLHttpRequest ですか? これは可能ですか?