三星手机拍照后显示图片角度旋转问题的解决方法
在项目开发阶段,我们需借助ImageView来展示拍摄所得的图片。然而,在用三星手机进行测试时,我们注意到图片出现了角度偏转。经过查阅相关资料三星手机照片旋转90度三星手机照片旋转90度,我们了解到三星手机拍照后显示图片角度旋转问题的解决方法,这主要是因为三星手机拍摄的照片默认旋转角度为90度,而其他品牌的手机则默认为0度。基于这一发现,我们明确了处理方法:首先确定图片旋转的具体角度三星手机照片旋转90度,随后进行逆向旋转。好的三星手机拍照后显示图片角度旋转问题的解决方法,现在开始编写代码。
首先是读取图片被旋转的角度。
/**
* 读取照片exif信息中的旋转角度
* @param path 照片路径
* @return 角度
*/
公开方法readPictureDegree接受一个字符串类型的路径参数,用于读取图片,并返回一个整数值。
int degree = 0;
try {
创建ExifInterface对象,命名为exifInterface,通过传入路径参数path初始化。
获取到图像的方向信息是通过调用exifInterface对象的getAttributeInt方法,该方法以ExifInterface.TAG_ORIENTATION为参数,并默认返回一个整数值。
当调用ExifInterface类的ORIENTATION_NORMAL方法时;
switch (orientation) {
当遇到ExifInterface中的ORIENTATION_ROTATE_90属性时:
degree = 90;
break;
若遇到ExifInterface中的ORIENTATION_ROTATE_180情况:
degree = 180;
break;
当遇到ExifInterface中的ORIENTATION_ROTATE_270属性时:
degree = 270;
break;
}
} catch (IOException e) {
e.printStackTrace();
}
return degree;
}
再接着是将图片旋转回0度。
公开方法toturn,接受两个参数:一个为Bitmap类型的img,另一个为String类型的path。
Matrix matrix = new Matrix();
matrix执行了旋转操作,旋转角度由读取图片的degree参数决定,具体路径为path。
int width = img.getWidth();
int height = img.getHeight();
Bitmap对象img是通过调用createBitmap方法创建的,该方法接收img、起始坐标(0,0)、宽度、高度、变换矩阵matrix以及一个布尔值true作为参数。
return img;
}