#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. Известно, что у них есть эта неприятная привычка.