我正在开发一个应用程序,用户可以通过我的CameraActivity(SurfaceView+相机)拍照并保存。之后将处理位图。
说了这么多,让我为您详细介绍一下。图片是使用以下方式拍摄的:
mCamera.takePicture(null, null, new PictureCallback() {...}
我没有指定.jpeg的质量。
在HTC One S上测试,照片被拍摄并保存。照片大小从未超过100kb。
在三星GT-I9000上测试,照片被拍摄并保存,但区别在于大小,它超过了1.2Mb。
由于我之后需要处理位图,因此在尝试解码位图以进行处理时,GT-I9000出现了一些内存不足问题:
try {
FileInputStream fis = new FileInputStream(new File(imagePath));
Bitmap savedPicture = BitmapFactory.decodeStream(fis);
我尝试更改
Camera Parameters .setJpegQuality(quality)
,但是并没有产生很大的差异。图像将占用整个屏幕大小,我使用了这种方法高效加载大型位图。它奏效了,我摆脱了OutOfMemory Exceptions,但我仍有一些问题:
设备之间的文件大小差异?我认为HTC One S比GT-I9000更好,那么为什么不保存更大的图片呢?
图像分辨率,HTC One S 640x480,GT-I9000 2560x1920为什么?好吧,这回答了第一个问题,但为什么会发生这种情况呢?