Почему мое изображение отображается сбоку?

#android #android-studio #android-layout #bitmap

#Android #android-studio #android-макет #растровое изображение

Вопрос:

Я следую руководству на Youtube по съемке с камеры без потери качества изображения

https://www.youtube.com/watch?v=CYRXXOM3aGI

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

[Отображение результата на экране после выполнения действия] [1].

Извините, если я недостаточно понятен. Я в порядке, Java-разработчик только начинает работать в Android Studio. Мой вопрос в том, есть ли функция, которую я могу использовать для поворота желаемого вывода недавно снятого и отображаемого растрового изображения.

[1]: https://i.stack.imgur.com/l9nqS.png ![дерево изображений должно быть обращено вверх, а не в сторону] (https://i.stack.imgur.com/qvKXh.jpg )

Комментарии:

1. snipboard.io/UE5xRW.jpg Это должно быть так, только мое отображаемое изображение повернуто на 90 градусов влево.

2. Что вы подразумеваете под поворотом влево?

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

Ответ №1:

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

Класс Bitmapfactory вообще не выполняет никаких вращений / преобразований типа EXIF. Вам нужно выполнить их самостоятельно.

Используйте класс ExifInterface для получения информации о повороте. Вы должны использовать вариант AndroidX вместо устаревшего фреймворка.

Итак, что вам нужно сделать, это получить EXIF изображения, и если в ТЕГЕ_ORIENTATION найдено значение, отличное от ORIENTATION_NORMAL , тогда вы должны повернуть изображение в соответствии с углом EXIF. Для этой операции потребуется создать новое растровое изображение, поэтому, чтобы избежать потенциальной ошибки OutOfMemoryError, воспользуйтесь некоторыми советами, приведенными в этой ссылке.

Другой более простой альтернативой является получение угла EXIF и применение матрицы поворота изображения к ImageView в соответствии с таким углом, поэтому нет необходимости вообще изменять файл изображения. Обратите внимание, что ImageView имеет тип матричного масштаба, который можно использовать в таких сценариях.

Комментарии:

1. Спасибо, это очень подробный ответ. Больше, чем я мог ожидать. Мне просто нужно пойти и изучить все это сейчас, ха-ха, ты дал мне домашнее задание

Ответ №2:

Я выбрал простой путь и просто сделал следующее

         imageView.setRotation(90);
  

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