在我的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()?
答案 0 :(得分:3)
每个Bitmap.getPixel方法调用都需要大量资源,因此您需要避免大量请求以提高代码的性能。
我的建议是:
e.g。
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;
}
}
这对于代码的性能来说是一个很大的改进