发现有小米手机拍照返回以后图片被旋转了,以前测试的小米手机没有出现这个问题,看到这个问题我马上去询问了度娘,
这个问题很多兄弟姐妹都遇到过,所以一下子就知道了解决的办法,获取图片的旋转角度,再进行选择下来,但是这个问题我花了两天才解决,翻墙我都不知道进行了多少次,请不要笑我,看我慢慢道来。
代码如下:、
//获取图片旋转角度
public static int readPictureDegree(String path) { //path 图片路径
int degree = 0;
try {
ExifInterface exifInterface = new ExifInterface(path);
int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
degree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
degree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
degree = 270;
break;
}
} catch (IOException e) {
e.printStackTrace();
return degree;
}
return degree;
}
//旋转图片
public static Bitmap rotaingImageView(int degree, Bitmap bitmap) { //angle 旋转的角度 bitmap需要旋转的图片
Matrix matrix = new Matrix();
matrix.postRotate(degree);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return resizedBitmap;
}
这样就解决了吗?不对,在高版本的时候我们使用ExifInterface会抛出异常,所以我们需要添加ExifInterface依赖:
compile "com.android.support:exifinterface:25.3.1",不使用android自带的ExifInterface了;
耗时我两天的不是因为这个,因为这个错误网上很多解决方案,我的错误是我自己给自己挖的坑,而且这个坑大家一定不要轻易去踩,没有大牛的提示,真的不容易跑出来。
我遇到的情况是使用ExifInterface怎么去获取我们的旋转度Orientation都是返回的0,其他的参数亦是;小伙伴们如果你也遇到了这个问题,先检查自己代码,在拍照图片返回的时候是否进行了图片处理,比如说压缩(我就是进行了压缩),因为在压缩图片后,我们的图片属性已经改变,旋转角度默认为了0,所以我们在使用ExifInterface的时候,获取到的就是为0。
千万注意:获取图片信息的时候,千万不要进行压缩等处理。