Как убедиться, что галерея Android правильно вращает изображения, сделанные в моем приложении - PullRequest
0 голосов
/ 10 декабря 2018

Мое приложение снимает фотографии, выполняет некоторую обработку и обеспечивает их включение в галерею 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 для поворота изображений?Если нет, есть ли что-то еще, что он использует, или я просто перезаписываю изображение повернутой версией?Как я могу убедиться, что в галерее и других приложениях, в которые загружены мои изображения, есть все необходимое для их отображения в правильной ориентации?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Неутешительное решение в моем случае - я большой идиот.Я загружал изображения, используя данные Exif для их поворота, обновления и сохранения с сохранением данных Exif.Часть этого процесса, которую я пропустил, заключалась в том, что я сохранял их повернутыми, поэтому портретные изображения теперь находились в правильной ориентации без поворота, а затем данные Exif инструктировали галерею вращать их.

Иногда (почтивсегда) проблема в том, что система делает именно то, что вы указали.

0 голосов
/ 10 декабря 2018

Хороший вопрос.

Если ориентация сохраняется в файле, но не отображается в галерее, это может быть связано с кэшированием ориентации в MediaStore.Поэтому вам нужно попытаться обновить эту информацию и там.

Ref - https://stackoverflow.com/a/22371344/9640177

При этом я бы сказал, что некоторые приложения могут не реализовывать интерфейс Exif, и в этом случаебыло бы лучше переопределить изображение с повернутой версией.

...