我正在开发一个应用程序,用户可以通过我的CameraActivity (SurfaceView+Camera)拍照并保存它。在此之后,将处理位图。
说让我跟你说说细节。这张照片的拍摄内容如下:
mCamera.takePicture(null, null, new PictureCallback() {...}我没有指定.jpeg的质量。
使用HTC One S进行测试,拍摄并保存图片。图片大小不超过100 The。
使用三星GT 9000进行测试,照片被拍摄,然后保存,但这里的区别是大小,它超过了1,2兆。
由于我需要在后面处理位图,所以当我试图解码bimap以处理位图时,我会遇到一些OutOfMemory问题:
try {
FileInputStream fis = new FileInputStream(new File(imagePath));
Bitmap savedPicture = BitmapFactory.decodeStream(fis);我曾试图改变Camera Parameters .setJpegQuality(quality),但它并没有产生太大的影响。
图像将占据所有屏幕的大小,我使用了这种方法-- 高效加载大型位图 --它成功了,我去掉了OutOfMemory Exception,但是我仍然有一些问题:
(谢谢你抽出时间;)
发布于 2013-06-03 20:37:19
你的问题不是图像压缩,而是分辨率,即尺寸。不同的Android设备有不同的默认图片大小。但幸运的是,您有了Camera.Parameters.setPictureSize(int宽度,int高度)方法。可以在调用Camera.takePicture()之前的任何时间设置大小,如下所示:
Camera.Parameters param = mCamera.getParameters();
param.setPictureSize(640, 480);
mCamera.setParameters(param);请注意,不同的Android设备也支持不同的图片大小。也就是说,您不能设置任意大小,您必须从特定于设备的列表中选择一个。有一个方法Camera.Parameters.getSupportedPictureSizes()。
请注意,同一设备上支持的图片大小对于这两个摄像机是不同的(如果该设备具有前向摄像机和后面向摄像机)。在开始查询和设置之前,请打开正确的摄像机。
最后,我应该承认,我听说过的所有设备都支持640x480图片大小。
https://stackoverflow.com/questions/16902627
复制相似问题