Как повернуть изображение в Glide, чтобы быть правой стороной вверх - PullRequest
0 голосов
/ 08 июня 2019

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

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

Я должен представить, что это довольно распространенный вариант использования! Я хотел бы взять следующий код и сократить его до простого метода Glide.

Вот что мы имеем сейчас:

final Matrix bitmapMatrix = new Matrix();
int widthMultiplier = 1;
int heightMultiplier = 1;
try {
    Metadata metadata = ImageMetadataReader.readMetadata(new ByteArrayInputStream(bo.toByteArray()));
    final Collection<ExifIFD0Directory> exifIFD0Directories = metadata.getDirectoriesOfType(ExifIFD0Directory.class);
    if (exifIFD0Directories != null) {
        for (ExifIFD0Directory d : exifIFD0Directories) {
            if (d.containsTag(ExifIFD0Directory.TAG_ORIENTATION)) {
                try {
                    final int exifOrientation = d.getInt(ExifIFD0Directory.TAG_ORIENTATION);

                    switch (exifOrientation) {
                        case 1:
                            break;  // top left
                        case 2:
                            heightMultiplier = -1;
                            break;  // top right
                        case 3:
                            bitmapMatrix.postRotate(180);
                            break;  // bottom right
                        case 4:
                            bitmapMatrix.postRotate(180);
                            heightMultiplier = -1;
                            break;  // bottom left
                        case 5:
                            bitmapMatrix.postRotate(90);
                            heightMultiplier = -1;
                            break;  // left top
                        case 6:
                            bitmapMatrix.postRotate(90);
                            break;  // right top
                        case 7:
                            bitmapMatrix.postRotate(270);
                            heightMultiplier = -1;
                            break;  // right bottom
                        case 8:
                            bitmapMatrix.postRotate(270);
                            break;  // left bottom
                        default:
                            break;  // Unknown
                    }
                    break;
                } catch (MetadataException e) {
                    handleException(e, subscriber, uri, inputStream, mFinalPath, fromGallery);
                    return;
                }
            }
        }
    }

} catch (ImageProcessingException | IOException e) {
    handleException(e, subscriber, uri, inputStream, mFinalPath, fromGallery);
    return;
}

Любые идеи приветствуются.

1 Ответ

0 голосов
/ 11 июня 2019

Из какого-то дополнительного ресурса звучит, как будто Glide на самом деле обрабатывает это автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...