Android: Активность камеры, Поворот изображения - PullRequest
0 голосов
/ 22 февраля 2019

Я выполнил действие камеры с SurfaceView и классами камер.

Два фрагмента: когда мы делаем снимок первым, он переходит ко второму фрагменту и показывает только что сделанный снимок.(Точно так же, как new Intent(MediaStore.ACTION_IMAGE_CAPTURE)).

Проблема возникает при показе изображения.Когда я делаю снимок в портретном режиме, он показывает это нормально, как и первое изображение.

enter image description here

Однако, когда я делаю снимок в альбомной ориентациирежим, это показывает, как на следующем втором рисунке.enter image description here

Но я хочу, чтобы он выглядел как третий.

enter image description here

Я думаю, чтопроблема возникает потому, что только потому, что я перевернул камеру в ландшафтном режиме, телефон не знает об этом.(Это очевидно) Но при включении поворота происходит сбой при переходе в альбомный режим при повороте телефона.

Есть ли способ, которым камера автоматически узнает, что пользователь делает снимок в альбомном режиметак же, как нормальное приложение камеры Android?Или любые решения моей проблемы будут в порядке.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Обычно ориентация изображения сохраняется в заголовке EXIF ​​изображения JPEG.Некоторые устройства не будут устанавливать этот флаг для вас в API камеры, но у всех есть класс ExifInterface .Библиотека поддержки делает это еще проще.

Даже если флаг установлен правильно, фрагмент, показывающий изображение, должен знать, как применить его для правильного отображения.Самое простое решение - использовать Glyde или другую библиотеку.

0 голосов
/ 22 февраля 2019

Я думаю, что ваша проблема проще, чем вы думаете.

Таким образом, в режиме портрет ваше устройство делает снимок, например, снимок 1080p в виде изображения в вертикальной плоскости.При съемке фотографии в альбомной ( в горизонтальном режиме ) в first fragmentSurfaceView) вы по-прежнему снимаете фотографию, например, в формате 1080p.

При просмотре фотографии на second fragment, ваше устройство по умолчанию не знает, в какой ориентации находится фотография .Это может быть и портретная фотография.Таким образом, при съемке изображения вам необходимо добавить дополнительный атрибут к фотоизображению (или связать со вторым фрагментом), сообщая второму фрагменту , что нужно изменить orientation и просмотретьизображение в определенном orientation.

Основываясь на ограниченной информации , я пришел к выводу, что в вашем коде нет ошибок (за исключением упомянутого вами сбоя - который, я считаю, связандля сохранения / восстановления instanceState из комплекта) - но просто для просмотра изображения в правильной ориентации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...