2014-09-03 70 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; 
    } 
} 

这将是你的代码的服务表现有很大的改进