我有2個imageData對象,我通過相同的上下文從同一個畫布獲得。 但對比它們時,它們不相等時,我會認爲他們會像它們應該包含相同的數據:比較2 imageData對象
var canv = document.createElement("canvas");
canv.setAttribute('width', 300);
canv.setAttribute('height', 300);
var context = canv.getContext('2d');
context.fillStyle = "#ff0000";
context.fillRect(0, 0, 300, 300);
var imageData = context.getImageData(0, 0, 300, 300);
var imageData2 = context.getImageData(0, 0, 300, 300);
if (imageData == imageData2) {
console.log("Test1: same");
} else {
console.log("Test1: different");
}
if (imageData.data == imageData2.data) {
console.log("Test2: same");
} else {
console.log("Test2: different");
}
if (imageData == imageData) {
console.log("Test3: same");
} else {
console.log("Test3: different");
}
if (imageData.data == imageData.data) {
console.log("Test4: same");
} else {
console.log("Test4: different");
}
此代碼輸出:
Test1: different
Test2: different
Test3: same
Test4: same
所以對象與自身的工作原理如預期的那樣以及在比較imageData對象內的數據時,而不是針對什麼應該是相同的副本。
這是一個比較對象的問題,還是有一些我缺少的數據來源於畫布元素的方式?
由於
感謝您的答覆有點慢。你能提出一個比較這兩個物體的更好方法嗎? – 2012-08-01 08:09:22
發佈了我能想到的最微不足道的解決方案 - 它不會很快,但它應該可以工作。也許有一些這樣的庫。 – Zeta 2012-08-01 08:15:57