可以通过分块处理来解决该问题。 代码示例:
public static int[][] getPixels(Bitmap bitmap) {
final int width = bitmap.getWidth();
final int height = bitmap.getHeight();
int[][] pixels = new int[height][width];
final int BLOCK_SIZE = 100; // adjust as per your preference
for (int i = 0; i < height; i += BLOCK_SIZE) {
for (int j = 0; j < width; j += BLOCK_SIZE) {
int blockHeight = Math.min(BLOCK_SIZE, height - i);
int blockWidth = Math.min(BLOCK_SIZE, width - j);
int[] buffer = new int[blockWidth * blockHeight];
bitmap.getPixels(buffer, 0, blockWidth, j, i, blockWidth, blockHeight);
for (int k = 0; k < blockHeight; k++) {
for (int l = 0; l < blockWidth; l++) {
pixels[i + k][j + l] = buffer[k * blockWidth + l];
}
}
}
}
return pixels;
}
该方法将图像分成块,并逐个处理每个块。 这可以解决处理一个非常大的位图时出现的性能问题。