Gui*_*lhE 2 compression camera android jpeg bitmap
我正在开发一个应用程序,用户可以通过我的CameraActivity(SurfaceView + Camera)拍摄照片并保存.之后,将处理位图.
说让我带你了解细节.图片拍摄时间:
mCamera.takePicture(null, null, new PictureCallback() {...}
Run Code Online (Sandbox Code Playgroud)
我没有指定.jpeg质量.
使用HTC One S进行测试,拍摄照片然后保存.图片大小永远不会超过100kb
使用三星GT-I9000进行测试,拍摄照片然后保存,但这里的差异是尺寸,超过1,2Mb.
因为我需要处理后面的位图,当我尝试解码bimap来处理它时,我对GT-I9000 有一些OutOfMemory问题:
try {
FileInputStream fis = new FileInputStream(new File(imagePath));
Bitmap savedPicture = BitmapFactory.decodeStream(fis);
Run Code Online (Sandbox Code Playgroud)
我试图改变,Camera Parameters .setJpegQuality(quality)但我没有产生巨大的变化.
图像将占用所有的屏幕大小,我使用这种方法有效地加载大位图 它工作,我摆脱了OutOfMemory Exceptions但我仍然有一些问题:
设备之间的文件大小差异?我认为HTC One S比GT-I9000好,为什么不保存更大的图片呢?
图像分辨率,HTC One S 640x480,GT-I9000 2560x1920为什么?那回答第一个问题,但为什么会这样呢?
谢谢你的时间 ;)
你的问题不是图像压缩,而是分辨率,即大小.不同的Android设备具有不同的默认图片大小.但幸运的是,你有 Camera.Parameters.setPictureSize(int width,int height) 方法.您可以在调用Camera.takePicture()之前随时设置大小:
Camera.Parameters param = mCamera.getParameters();
param.setPictureSize(640, 480);
mCamera.setParameters(param);
Run Code Online (Sandbox Code Playgroud)
请注意,不同的Android设备也支持不同的图片尺寸.即,您无法设置任意大小,您必须从特定于设备的列表中选择一个.有一个方法Camera.Parameters.getSupportedPictureSizes().
请注意,两台摄像机在同一设备上支持的图片尺寸不同(如果设备有前置摄像头和后置摄像头).在开始查询和设置之前,请打开正确的相机.
最后,我应该承认我听过的所有设备都支持640x480图片大小.
| 归档时间: |
|
| 查看次数: |
2806 次 |
| 最近记录: |