Мое приложение снимает фотографии, выполняет некоторую обработку и обеспечивает их включение в галерею Android.
Проблема, с которой я сталкиваюсь, заключается в том, что при открытии изображений в галерее они вращаются неправильно - хотяИзучение данных Exif показывает, что тег ориентации установлен и выглядит правильным.Если я загружу его в экзаменационный инструмент Exif, он скажет что-то вроде «Ориентация: повернуть на 90 CW», но я заметил, что другие приложения, такие как Gimp, также пропускают данные Exif, поэтому мне интересно, есть ли что-то не так сданные, как я их храню.
Мой код ориентации Exif записан так:
private void writeOrientation(int orientation, String path) {
try {
int exifOrientation = ExifInterface.ORIENTATION_NORMAL;
if (45 < orientation) {
if (orientation <= 135) {
exifOrientation = ExifInterface.ORIENTATION_ROTATE_90;
} else if (orientation <= 225) {
exifOrientation = ExifInterface.ORIENTATION_ROTATE_180;
} else {
exifOrientation = ExifInterface.ORIENTATION_ROTATE_270;
}
}
ExifInterface exif = new ExifInterface(path);
exif.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(exifOrientation));
exif.saveAttributes();
} catch (Exception e) {
Log.w(TAG, "Failing to write orientation: " + e.getMessage());
Log.getStackTraceString(e);
}
}
Это работает, в моем собственном коде я поворачиваю изображение в соответствии сего ориентация и выглядит нормально.Но в галерее все мои портретные изображения все еще отображаются в виде пейзажа.
Использует ли галерея данные Exif для поворота изображений?Если нет, есть ли что-то еще, что он использует, или я просто перезаписываю изображение повернутой версией?Как я могу убедиться, что в галерее и других приложениях, в которые загружены мои изображения, есть все необходимое для их отображения в правильной ориентации?