//获取旋转角度
public int getRotationAmount(Uri imageUri) {
try {
String rotationAmount = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
rotationAmount = new ExifInterface(getContentResolver().openInputStream(imageUri)).getAttribute(ExifInterface.TAG_ORIENTATION);
}else{
ExifInterface exifInterface = new ExifInterface(getPath(this,imageUri));
rotationAmount = String.valueOf(exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL));
}
if (TextUtils.isEmpty(rotationAmount)) {
return 0;
}
switch (Integer.parseInt(rotationAmount)) {
case 3:
return 180;
case 6:
return 90;
case 8:
return 270;
default:
return 0;
}
} catch (Exception e) {
return 0;
}
}
//获取path
private String getPath(Context context, Uri uri) {
String path = null;
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
if (cursor == null) {
return null;
}
if (cursor.moveToFirst()) {
try {
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
} catch (Exception e) {
e.printStackTrace();
}
}
cursor.close();
return path;
}
// 旋转照片
public static Bitmap rotateBitmap(Bitmap bitmap, int degress) {
if (bitmap != null) {
Matrix m = new Matrix();
m.postRotate(degress);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);
return bitmap;
}
return bitmap;
}
网友评论