Android 相机在Portrait模式下照相保存照片
2012-07-13 13:26
477 查看
在使用android的camera的时候会遇到两个问题,一个是camera在preview的时候orientation的问题,第二个就是在takePicture之后回遇到保存下来的图片旋转90度的问题
先解决第一个preview的orientation的问题,第一:在android2.2与以后的sdk版本中camera的orientation都是用的landscape,如果你的activity的screenOrientation设置成landscape的话,就不会有这个问题;第二:如果你的activity必须用portrait,那么可以在调用camera.open()方法之后调用下面这个方法来解决这个问题,
如果你用的sdk是2.2之前的话,可以这样解决:
下面就是如何解决保存Portrait模式下图片旋转90度的问题
下面的程序在onPictureTaken方法里面执行
先解决第一个preview的orientation的问题,第一:在android2.2与以后的sdk版本中camera的orientation都是用的landscape,如果你的activity的screenOrientation设置成landscape的话,就不会有这个问题;第二:如果你的activity必须用portrait,那么可以在调用camera.open()方法之后调用下面这个方法来解决这个问题,
camera.setDisplayOrientation(90);
如果你用的sdk是2.2之前的话,可以这样解决:
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class); rotateMethod.invoke(camera, 90);
下面就是如何解决保存Portrait模式下图片旋转90度的问题
下面的程序在onPictureTaken方法里面执行
BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 6; options.inDither = false; options.inPurgeable = true; options.inInputShareable = true;
options.inTempStorage = new byte[32 * 1024];
options.inPreferredConfig = Bitmap.Config.RGB_565; Bitmap bMap; bMap = BitmapFactory.decodeByteArray(imgData[0], 0, imgData[0].length, options); if(bMap.getHeight() < bMap.getWidth()){ orientation = 90; } else { orientation = 0; } Bitmap bMapRotate; if (orientation != 0) { Matrix matrix = new Matrix(); matrix.postRotate(orientation); bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), matrix, true); } else bMapRotate = Bitmap.createScaledBitmap(bMap, bMap.getWidth(), bMap.getHeight(), true); FileOutputStream out; try { File imgFile = new File("/xxxx/xxx/snap.jpeg"); out = new FileOutputStream(imgFile); bMapRotate.compress(Bitmap.CompressFormat.JPEG, 90, out); if (bMapRotate != null) { bMapRotate.recycle(); bMapRotate = null; } camera.startPreview(); } catch (FileNotFoundException e) { e.printStackTrace(); }
相关文章推荐
- android 调用系统相机拍照并保存照片原图
- Android调用系统相机方法及保存照片方式
- Android中相机拍摄照片,以及相册选择图片压缩上传(压缩后保存进SD中)(可用于修改头像等)
- android调用系统相机拍照与打开相册选择照片进行截取保存笔记
- android调用系统相机拍照保存照片并显示在当前界面
- Android自定义相机方法及保存照片方式
- Android中照相,从相册选取照片,压缩,保存到手机内存,展示到界面,点击放大,上传。(含demo)
- android调用系统相机并调整照片大小保存,最后上传照片
- Android 使用系统相机拍摄照片保存到本地并在系统相册中显示
- android--调用系统相机拍照,显示并保存照片 - zhengwen
- android--调用系统相机拍照,显示并保存照片
- android 打开相机/打开相册(版本兼容)-获取照片,压缩100K一下保存到本地
- Android调用系统相机拍照、从相册中取照片,裁剪,并保存到手机SD卡中,展示到界面
- Android调用自身相机拍照并保存拍摄的照片到手机的sd卡
- android调用系统相机功能,并将照片保存到本地
- Android截图 调用图片照片并截图,相机照相截图
- Android调用系统相机拍照保存照片很小解决方案
- Android中照相,从相册选取照片,压缩,保存到手机内存,展示到界面,点击放大,上传。(含demo)
- Android相机拍照保存高清原图
- Qt for Android调用原生接口打开相机拍照并存储照片