HTML5 ve Javascript'te iki resmi karşılaştıran bir komut dosyası oluşturmaya çalışıyorum. Ancak bazı garip nedenlerden dolayı, görüntüler her zaman aynıdır.getImageData her zaman dönüyor 0
Ve sorunun ne olabileceğine baktığımızda, her bir pikselin her veri değerinin bazı garip nedenlerden dolayı "0" döndüğünü öğrendim.
Peki, yanlış yaptığım şey hakkında bir fikrin var mı?
Bazı nedenlerden ötürü çok basit bir şeymiş gibi hissediyorum, ama tuval elemanını öğrendim, yani evet. Ben sorunun görüntü verileri muhtemelen Tuval için kullanmayı denediği noktada hazır olmadığını olduğundan şüpheleniyorsanız
function compareImg() {
var c1 = document.getElementById("c");
var ctx1 = c1.getContext("2d");
var c2 = document.getElementById("c2");
var ctx2 = c2.getContext("2d");
var match = 0;
var img1 = new Image();
img1.src = "cat.jpg";
img1.onload = function() {
ctx1.drawImage(img1, 0, 0);
}
var img2 = new Image();
img2.src = "bird.jpg";
img2.onload = function() {
ctx2.drawImage(img2, 0, 0);
}
for(var x = 0; x<c1.width; x++) { // For each x value
for(var y = 0; y<c1.height; y++) { // For each y value
var data1 = ctx1.getImageData(x, y, 1, 1);
var data2 = ctx2.getImageData(x, y, 1, 1);
if (data1.data[0] == data2.data[0] && data1.data[1] == data2.data[1] && data1.data[2] == data2.data[2]) {
match++;
}
}
}
var pixels = c1.width*c1.height;
match = match/pixels*100;
document.getElementById("match").innerHTML = match + "%";
}
" src "ve" onload "atama sırasına dair batıl inancımı eklediğiniz için teşekkürler. :-) Belki de bir batıl inanç değil! – Pointy
@Pointy [Hayır, sadece batıl inanç değildir.] (Http://stackoverflow.com/questions/4776670/should-setting-an-image-src-to-dataurl-be-available-immediately) – Phrogz
Fascinating, @ Phrogz! İnsanların bunu yapmasını söylemek için yıllarca haklı hissettim :-) – Pointy