Я загружаю изображение из галереи или камеры, чтобы я мог его редактировать. Я использовал EXIFInterface для управления вращением растрового изображения. Но в Samsung s8 [Android 9] он обеспечивает поворот изображения на 90 градусов, но изображение изначально не поворачивается. И в зависимости от этого поворота я поворачиваю его на 90 градусов, чего я не хочу.
Я пытался использовать ContentResolver для поворота курсора, но у него также есть та же проблема, что и у EXIFInterface. Ниже приведены оба метода, которые я пытался решить проблему:
private static int getExifOrientation(String image_absolute_path) throws IOException {
ExifInterface ei = new ExifInterface(image_absolute_path);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
return RotationOptions.ROTATE_90;
case ExifInterface.ORIENTATION_ROTATE_180:
return RotationOptions.ROTATE_180;
case ExifInterface.ORIENTATION_ROTATE_270:
return RotationOptions.ROTATE_270;
default:
return RotationOptions.NO_ROTATION;
}
}
private static int getOrientation(Context context, Uri photoUri) {
try {
Uri imageContentUri = getImageContentUri(context, photoUri.getPath());
if (imageContentUri == null) {
return -1;
}
Cursor cursor = context.getContentResolver().query(imageContentUri, new String[]{MediaStore.Images.ImageColumns.ORIENTATION}, null, null, null);
if (cursor == null) {
return -1;
}
if (cursor.getCount() != 1) {
cursor.close();
return -1;
}
cursor.moveToFirst();
int orientation = cursor.getInt(0);
cursor.close();
cursor = null;
return orientation;
} catch (Exception e) {
return -1;
}
}