我一直在試圖製作一個腳本來比較HTML5和Javascript中的兩個圖像。但出於某種奇怪的原因,它總是返回圖像完全相同。getImageData總是返回0
當我們看看問題會發生什麼時,我發現每個像素的每個數據值由於某種奇怪的原因返回「0」。
那麼,有什麼想法我做錯了什麼? :)
出於某種原因,我覺得這是非常簡單的事情,但我剛剛瞭解了畫布元素,所以是的。
這是我的代碼:
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「和」onload「順序的迷信。 :-)也許這畢竟不是迷信! – Pointy 2011-04-17 16:13:03
@Pointy [不,它不只是迷信。](http://stackoverflow.com/questions/4776670/should-setting-an-image-src-to-dataurl-be-available-immediately) – Phrogz 2011-04-17 16:17:23
迷人,@ Phrogz!我覺得所有這些年來都在告訴人們這樣做: - ) – Pointy 2011-04-17 16:22:25