Вопрос

Я разместил это на форумах разработчиков Android, но хотел обратиться сюда.

Одним из действий в нашем приложении было фотографирование.Предварительный просмотр изображения показывает правильный путь на экране в версиях 1.5 и 1.6, но при сохранении сохраняется jpg, повернутый на 90 градусов.

Я могу вращать его в режиме реального времени при отображении, и, думаю, я мог бы повторно сохранить его после сохранения.Моя проблема в том, что я хотел бы сохранить его правильно при съемке.

Мое приложение, скомпилированное в версии 1.5, работает нормально.У меня были некоторые проблемы с памятью в версии w/ 1.6 из-за размера изображения, что было странно, поскольку размер изображения увеличивался при съемке фотографий с помощью функции picture w / surfaceholder / imagecapture обратный вызов.Кажется, я исправил повторное отображение этих изображений, изменив их размер с помощью матрицы bitmapfactory.Но моя камера сейчас находится вращающийся все 90 градусов.Похоже, что мое переопределение surfaceChanged ничего не делает, поэтому я устанавливал вращение на 90 (я не могу вспомнить почему, это было 10 месяцев назад!).Я пробовал поворачивать параметры параметров камеры на 90 градусов, 0 градусов.Это, кажется, не чтобы сделать что-нибудь...есть какие-нибудь мысли?

Это было полезно?

Решение

Драйверы камер не знают ориентации устройства.В 1.5 и 1.6 вам нужно вызвать parameters.set("вращение", градус), чтобы сообщить водителям о вращении перед вызовом takePicture().В версии 2.0 появилась новая настройка API (см. Ниже).Обратите внимание, что некоторые устройства поворачивают изображения целиком, а некоторые просто устанавливают ориентацию в заголовке EXIF.

http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation (int)

Задает ориентацию устройства в градусах.Например, предположим, что естественным положением устройства является ландшафт.Если пользователь делает снимок в альбомном режиме с разрешением 2048x1536, поворот должен быть установлен в 0.Если пользователь поворачивает телефон на 90 градусов по часовой стрелке, значение поворота должно быть установлено на 90.Приложения могут использовать OrientationEventListener для установки этого параметра.Драйвер камеры может установить ориентацию в заголовке EXIF без поворота изображения.Или же драйвер может повернуть изображение и эскиз в формате EXIF.Если изображение в формате Jpeg повернуть, ориентация в заголовке EXIF будет отсутствовать или равна 1 (строка # 0 - верхняя, а столбец # 0 - левая сторона).
Параметры
вращение Ориентация устройства в градусах.Вращение может быть только 0, 90, 180 или 270

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top