2013-07-21 49 views
2

從HTML5畫布檢索的顏色對象我想比較(有限數量)從HTML5畫布檢索的顏色值。所以,我檢索和存儲我很感興趣,通過ctx.getImageData(x, y, 1, 1).data;如何比較(的內容)通過ctx.getImageData()

然後我試圖使用Array.prototype.compare來自:How to compare arrays in JavaScript?方式:

// add the same compare method to Uint8ClampedArray 
Uint8ClampedArray.prototype.compare=Array.prototype.compare; 

那最近Firefox和Chrome工作正常,但我很快就發現,不所有的瀏覽器都會返回一個Uint8ClampedArray類型的對象。 IE seems to use an Object of CanvasPixelArraySafari seems to use a simple 4-value array

我是否必須自己處理這些差異,或者是否存在可靠的基本方法(普通JS或jQuery)來比較兩個由ctx.getImageData()所檢索的值,該值適用於所有瀏覽器?

回答

1

您可以(?可能)使用Array比較方法是這樣的:

var comparisonResult = [].compare.call(yourPixels, colors); 

該代碼發現從一個數組實例,「比較」的方法,並與您的像素陣列作爲this值和調用它其他數組(您的顏色)作爲第一個參數。

這將是同樣的事情:

var comparisonResult = Array.prototype.compare.call(yourPixels, colors); 

但它更打字,我很懶。無論如何,只要像素「看起來像」一個數組(它們有一個「長度」屬性和[]索引作品),應該適合你。

編輯 —我剛纔看了一下你鏈接的問題。如果你只是需要一個「比較」函數來達到這個目的,那麼就不需要將它添加到數組原型中,因爲無論如何你都沒有使用它。只需編寫一個帶有兩個參數的比較函數即可。