Android部分手机拍照后获取的图片被旋转问题的解决方法部分手机拍照后获取的图片被旋转问题的解决方法
调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的。其它品牌
的手机都是正常的,就三星出现这个怪事。
在Android适配上,我原来一直以为国内的小米手机够奇葩了,结果还有更奇葩的!你说你没事旋转照片干啥,实在是猜不透
其居心何在,纯粹是在给开发者制造麻烦啊!
解决办法解决办法是获取到拍照后照片被旋转的角度,再旋转回去就好了。
具体思路:具体思路:
1、首先在调用拍照方法时,保存拍照后的相片原图,得到原图路径,(PhotoBitmapUtils是我自己写的一个工具类)
String fileName = "";
/**
* 启动相机拍照
*/
private void addBitmapShoots() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 设置图片要保存的 根路径+文件名
fileName = PhotoBitmapUtils.getPhotoFileName(getContext());
File file = new File(fileName);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, OPEN_CAMERA);
}
2、在获取相机返回的回调方法onActivityResult()中,修复被旋转的图片并取得修复后的图片路径,有了这个路径后就可以展
示出来了
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 获取相机拍照返回
if (resultCode == Activity.RESULT_OK && requestCode == OPEN_CAMERA) {
// 得到修复后的照片路径
String filepath = PhotoBitmapUtils.amendRotatePhoto(fileName, getContext());
}
}
PhotoBitmapUtils类:
/**
* 集合一些图片工具
*
* Created by zhuwentao on 2016-07-22.
*/
public class PhotoBitmapUtils {
/**
* 存放拍摄图片的文件夹
*/
private static final String FILES_NAME = "/MyPhoto";
/**
* 获取的时间格式
*/
public static final String TIME_STYLE = "yyyyMMddHHmmss";
/**
* 图片种类
*/
public static final String IMAGE_TYPE = ".png";
// 防止实例化
private PhotoBitmapUtils() {
}
评论0