1ピクセルを変更する以外は同じ2つの画像がある場合、配列に131の異なる変更があると言います。なぜこうなった?私はgetcanvasdataとループを使って2つの配列を作成し、両方を比較しています。GetImageDataが2つの画像を比較するために期待される結果を返さない
var c = document.getElementById("myCanvas");
var c2 = document.getElementById("myCanvas2");
var ctx = c.getContext("2d");
var ctx2 = c2.getContext("2d");
var img = new Image();
var img2 = new Image();
var diffpixels = [];
var imgData;
var imgData2;
img.src = "avengers2.jpg";
img2.src = "avengers1.jpg";
img.onload = function() {
ctx.drawImage(img, 0, 0);
imgData = ctx.getImageData(0, 0, 1920, 1080).data;
img2.onload = function() {
ctx2.drawImage(img2, 0, 0);
imgData2 = ctx2.getImageData(0, 0, 1920, 1080).data;
console.log(imgData2.length);
for (var i = 0; i < imgData.length; i++) {
if (imgData[i] === imgData2[i]) {} else {
diffpixels.push(i);
}
}
console.log(diffpixels);
}
}
<canvas id="myCanvas" width="1920" height="1080" style="border:1px solid #d3d3d3"></canvas>
<canvas id="myCanvas2" width="1920" height="1080" style="border:1px solid #d3d3d3"></canvas>
イメージファイルはどのように作成しましたか?ピクセルを変更してファイルを保存すると、JPGの非可逆圧縮アルゴリズムがより多くの違いを説明することができますか? – nnnnnn
異なるピクセル数ではなく、異なるチャンネル(つまりピクセルx 4)を数えていることに注目してください。 – K3N