logo
Mobile
Максим Колмогоров
Максим Колмогоров
VK

Переворачиваем фото на Kotlin с помощью BitmapFactory

Оказывается, это не так уж и сложно.

Переворачиваем фото на Kotlin с помощью BitmapFactory

Переворачиваем фото

Частая проблема при разработке модуля камеры в приложении на Android это перевернутая фотография, которая возвращается после того как фото было сделано. Многих разработчиков это приводит в ступор, особенно если файл нужно не оставить сохраненным на устройстве, а куда-то отправить (на сервер) или “вставить” в ImageView чтобы показать пользователю.

перевернутое фото
Согласитесь, это немного не то что мы ожидали?

Это проблема решается очень просто с помощью BitmapFactory и небольшого количества кода. Давайте продемонстрируем пример:

пример кода

На 70 строке кода мы объявили переменную, которая содержит Camera.PictureCallback. Вы с вероятностью 99% получаете фото таким же способом. Обратный вызов возвращает переменную data первым аргументом (все в этой же строчке), которая представляет из себя byteArray.

Ниже на 71 строке мы загружаем наш массив из байтов (фотографию) в класс BitmapFactory. Таким образом мы создали BitMap из массива байтов.

А с 73 по 75 строчку мы вызываем класс матрицы, переворачиваем ее на 90 градусов и создаем новый BitMap на основе прошлого (где мы фото загрузили) и еще устанавливаем туда матрицу. Теперь в переменной rotatedBitmap хранится перевернутая фотография.

P.S: переменная viewPhoto не важна, это просто ImageView в который я подсовываю картинку, дабы показать пользователю. Результат:

результат

Код на GitHub:

Оставьте комментарий

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Нет комментариев