Android — BitmapFactory обрабатывает все изображения как ландшафтные

#android #bitmapfactory

#Android #bitmapfactory

Вопрос:

Я хочу загрузить байты изображения в ImageView с помощью BitmapFactory с помощью этого кода:

 ImageView imageView = findViewById(R.id.photo_view);
imageView.setImageBitmap(BitmapFactory.decodeByteArray(imgBytes, 0, imgBytes.length));
 

Это работает, но каждое показанное изображение является ландшафтным. То же самое происходит, когда я пытаюсь загрузить изображение с URL-адреса с помощью BitmapFactory. Picasso очень хорошо работает при загрузке изображения с URL-адреса, но в этом случае мне нужно загрузить байты изображения в ImageView.

Более того, когда я считываю изображение с URL-адреса с помощью BitampFactory и печатаю размеры, они одинаковы как для портретных, так и для альбомных изображений.

Например, портретное изображение имеет размер 720×1280, а альбомная — 1280х720, и оно будет печатать 1280х720 для обоих, поскольку оно обрабатывает все изображения как пейзажные!

Есть предложения?

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

1. Откуда берется это изображение, что это массив байтов? Также является ли изображение по умолчанию пейзажным или портретным изображением?

2. Вы должны прочитать ориентацию из файла jpg. Используйте ExifInterface. И при необходимости поворачивайте растровое изображение.

3. @DavidKroukamp изображение поступает с телефона, отправляется через REST в базу данных Heroku Postgres и затем извлекается, но я думаю, что это не имеет значения, потому что это также имеет место, когда я загружаю изображения в ImageView непосредственно с телефона.

4. @blackapps Спасибо, я это уже сделал, но я отправил байты изображения поверх ОСТАЛЬНЫХ, так что могу ли я сделать то же самое, когда оно будет извлечено, или есть только необработанные байты без дополнительной информации о bitmap?

5. Вы получаете файл jpg? Вы поместили эти байты jpg в этот массив байтов? Если да, то у вас есть вся информация. И у вас есть телефон Samsung. Известно, что у них есть эта неприятная привычка.