2016-02-21 28 views
1

Bitmap(來自android.graphics)有sameAs方法。 給定另一個位圖,如果它具有與此位圖相同的尺寸,配置和像素數據,則返回true。 我不知道它如何在引擎蓋下工作?重寫它有意義嗎(也許使用一些直方圖方法或關鍵點匹配)?位圖sameAs如何工作?

回答

2

,它基本上是

if(bmp1.height==bmp2.height && bmp1.width==bmp2.width) { 
    for(int i=0; i< bmp1.width; i++){ 
    for(int j=0; j< bmp1.height; j++){ 
     if(bmp1.getPixel(i,j) != bmp2.getPixel(i,j)) { 
     return false; 
     } 
    } 
    } 
    return true; 
} 
return false; 

但它將使用例如memcmp低水平內存比較函數,而不是實際的循環那樣的。

至於是否有意義重寫它 - 不是真的。你會搞砸任何其他誰承擔該功能的作品。創建自己的函數sameKeyPoint可能有意義,但它可以進行關鍵點匹配。