2014-09-03 7 views
0

在我的Android項目中, 這是我的代碼。如何在Android中使用字節數組獲取像素顏色

for (int x = 0; x < targetBitArray.length; x += weight) { 
    for (int y = 0; y < targetBitArray[x].length; y += weight) { 
     targetBitArray[x][y] = bmp.getPixel(x, y) == mSearchColor; 
    } 
} 

但是這段代碼浪費了很多時間。

所以我需要找到比bitmap.getPixel()更快的方式。 我想要使用從位圖轉換的字節數組獲取像素顏色,但我不能。 如何替換Bitmap.getPixel()?

回答

3

每個Bitmap.getPixel方法調用都需要大量資源,因此您需要避免大量的請求以提高代碼的性能。

我的建議是:

  1. 讀取的圖像數據一行接一行Bitmap.getPixels方法到本地陣列
  2. 迭代沿着本地陣列

例如

int [] rowData= new int [bitmapWidth]; 
for (int row = 0; row < bitmapHeight; row ++) { 
    // Load row of pixels 
    bitmap.getPixels(rowData, 0, bitmapWidth, 0, row, bitmapWidth, 1); 

    for (int column = 0; column < bitmapWidth; column ++) { 
     targetBitArray[column][row] = rowData(column) == mSearchColor; 
    } 
} 

這將是你的代碼的服務表現有很大的改進