这听起来像是一个奇怪/愚蠢的问题。但听我说完。
至少在 T-Mobile G1 上,Android 应用程序限制为 16 MB 的堆。
并且每个像素需要 4 个字节来存储图像(以位图形式):
public void onPictureTaken(byte[] _data, Camera _camera) {
Bitmap temp = BitmapFactory.decodeByteArray(_data, 0, _data.length);
}
所以 1 张 6 兆像素的图像占用了 24MB 的堆空间。(提示内存溢出)。
现在我非常了解使用参数进行解码的能力,以有效减小图像的大小。我什至有一种方法可以将其缩小到所需的大小。
但是在我想将相机用作优质相机的场景中呢?
我不知道如何将此图像输入数据库。一旦我解码,它就会出错。
注意:我需要(?)将其转换为位图,以便在存储之前旋转它。
所以总结一下:
- 限制为 16MB 的堆
- 图像占用 24MB 堆
- 没有足够的空间来拍摄和处理图像
这并不能解决问题,但我建议将其作为其他仅从某个位置加载图像的起点: Displaying Bitmaps on android