您的位置:首页 > 移动开发 > Android开发

Android之图片旋转

2016-04-18 09:35 381 查看
我们在开发过程中,利用app通过API去调用系统相机拍照的时候,不同的机型有时候拍出来的图片角度不对,被旋转了90°或者180°。例如三星的S4,在调用其相机拍照的时候,拍出来的照片就旋转了90℃或者是270℃。这不是我们想要的,遇到这种情况不得不手动将拍出来的照片旋转一定的角度。下面就大家提供关于图片旋转的方法。

图片旋转算法:

/**
* 读取图像的旋转度
* @param path
* @return
*/
public static int readBitmapDegree(String 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;
}

/**
* 将图片按照某个角度进行旋转
*
* @param bm
*            需要旋转的图片
* @param degree
*            旋转角度
* @return 旋转后的图片
*/
public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {
Bitmap returnBm = null;

// 根据旋转角度,生成旋转矩阵
Matrix matrix = new Matrix();
matrix.postRotate(degree);
try {
// 将原始图片按照旋转矩阵进行旋转,并得到新的图片
returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
} catch (OutOfMemoryError e) {
}
if (returnBm == null) {
returnBm = bm;
}
if (bm != returnBm) {
bm.recycle();
}
return returnBm;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: