#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. Вам нужно выполнить их самостоятельно.
Итак, что вам нужно сделать, это получить EXIF изображения, и если в ТЕГЕ_ORIENTATION найдено значение, отличное от ORIENTATION_NORMAL , тогда вы должны повернуть изображение в соответствии с углом EXIF. Для этой операции потребуется создать новое растровое изображение, поэтому, чтобы избежать потенциальной ошибки OutOfMemoryError, воспользуйтесь некоторыми советами, приведенными в этой ссылке.
Другой более простой альтернативой является получение угла EXIF и применение матрицы поворота изображения к ImageView в соответствии с таким углом, поэтому нет необходимости вообще изменять файл изображения. Обратите внимание, что ImageView имеет тип матричного масштаба, который можно использовать в таких сценариях.
Комментарии:
1. Спасибо, это очень подробный ответ. Больше, чем я мог ожидать. Мне просто нужно пойти и изучить все это сейчас, ха-ха, ты дал мне домашнее задание
Ответ №2:
Я выбрал простой путь и просто сделал следующее
imageView.setRotation(90);
Итак, теперь изображение отображается правильно. Я знаю, что это, вероятно, вызовет у меня проблемы в будущем, но это мечта новичков.