android - 把图片按照重力来旋转(拍时什么方向就变成什么方向)
访问量: 2130
我们遇到个问题: 拍照功能,在 三星S3 5.0的机器上的照片,本来是机器竖着的时候拍的,
结果保存的时候变成了横屏的.
所以,需要下列代码进行调整:
/**
* 针对部分机型,拍的照片是横屏的. 需要给他竖过来
*/
private Bitmap ajustOrientation(Bitmap bm, String imgpath) {
int rotate = 0;
ExifInterface exif = null;
try {
exif = new ExifInterface(imgpath);
} catch (IOException e) {
e.printStackTrace();
exif = null;
}
if (exif != null) {
// 读取图片中相机方向信息
int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
// 计算旋转角度
switch (ori) {
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
default:
rotate = 0;
break;
}
}
if (rotate != 0) {
// 旋转图片
Matrix m = new Matrix();
m.postRotate(rotate);
bm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
bm.getHeight(), m, true);
}
return bm;
}