Во-первых, рассмотрим API, используемый в другой версии SDK, пожалуйста, используйте AndroidX ExifInterface Library
Во-вторых, ExifInterface
для чтения и записи тегов Exif в различных форматах файлов изображений. Поддерживается для чтения: JPEG, PNG, WebP, HEIF, DNG, CR2, NEF, NRW, ARW, RW2, ORF, PEF, SRW, RAF.
Но вы используете его для растрового изображения, растровое изображение не имеет заголовков EXIF. Вы уже выбросили любые данные EXIF, когда загружали растровое изображение, откуда бы оно ни исходило. Используйте ExifInterface для исходного источника данных, а не для Bitmap
, вы можете попробовать использовать следующий код для получения информации и не забудьте использовать исходный поток.
public static int getExifRotation(Context context, Uri imageUri) throws IOException {
if (imageUri == null) return 0;
InputStream inputStream = null;
try {
inputStream = context.getContentResolver().openInputStream(imageUri);
ExifInterface exifInterface = new ExifInterface(inputStream);
int orienttation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED)
switch (orienttation) {
case ExifInterface.ORIENTATION_ROTATE_90:
return 90;
case ExifInterface.ORIENTATION_ROTATE_180:
return 180;
case ExifInterface.ORIENTATION_ROTATE_270:
return 270;
default:
return ExifInterface.ORIENTATION_UNDEFINED;
}
}finally {
//here to close the inputstream
}
}