【重头学习Android】关于自定义相机后照相旋转问题终极解决方案

新运营了公众号:Android面试无忧

这几天被这个相机照片方向问题弄得头大。主要问题集中在:

在某些机型上,如三星手机,会经常出现图片拍完后旋转问题。

在网上的方法

ExifInterface exifInterface =   new ExifInterface(path);
  int tag = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);

此方法是原理,关键我的问题在于path的获取。

1)Uri uri = data.getData();获取uri

2)String[] proj = {MediaStore.Images.Media.DATA}; 
Cursor cursor = getActivity().managedQuery(uri, proj, null, null, null); 
//按我个人理解 这个是获得用户选择的图片的索引值 
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
cursor.moveToFirst(); 
//最后根据索引值获取图片路径 
String path = cursor.getString(column_index); 
这里拍摄的图片一定要是JPG格式,因为只有JPG图片里才包括了EXT信息,摄像头的信息,其他格式的图片可能不支持。

以上是本地选取图片,对于拍照其实道理一样,主要是前后摄像头的位置会导致图片旋转的角度不同,前置摄像头图片需要旋转270,后置摄像头图片需要旋转90。

基于以上方法可解决。

最后关于path,uri,file转化关系作一归纳:

1)uri是存在数据库里的地址,path是某文件的具体目录,file就是普通的文件。

从data.getData()获取到uri,由uri查询path, 由path取得fileFile file = new File(path);  



2)File file = new File(path); Uri uri = Uri.fromFile(file); uri.getPath()获取path。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值