Cwac-камера и Nexus S Portrait - странный размер растрового изображения

Проблема с Nexus S, после первого сбоя Cwac-камеры при съемке:

Я фотографирую с экрана. Ориентация: портретная, но ловит пейзажную картинку, поэтому с поворотом на 90°

В коде

В моем расширенном классе SimpleCameraHost полученное растровое изображение имеет размерность ландшафтного изображения

@Override
public void saveImage(byte[] image)
{
      Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
...

LOG bitmap.getWidth => 2560

LOG bitmap.getHeight => 1920

1 ответ

Решение

Ориентация фотографии должна соответствовать фактической ориентации устройства. Итак, если устройство находится в портретном положении, изображение должно быть портретным. Если устройство удерживается в альбомной ориентации, изображение должно быть альбомным. Выбор android:screenOrientation Значение (или его отсутствие) не должно влиять на эти результаты - оно просто влияет на поведение вашего пользовательского интерфейса.

Я только что проверил это на Nexus S, и камера, обращенная назад, работает, как и ожидалось. я добавил android:screenOrientation="portrait" в демонстрационном приложении, и когда устройство удерживается в портретном режиме, фотографии сохраняются в портретном режиме, а когда устройство удерживается в альбомном режиме, фотографии сохраняются в альбомной ориентации.

Если вы считаете, что у вас есть доказательства обратного, создайте пример проекта, который воспроизводит ошибку, и сообщите о проблеме в проекте, опубликуя этот пример проекта и шаги по его запуску для воспроизведения ошибки.


ОБНОВИТЬ

Хорошо, теперь я понимаю, что вы видите. Bitmap.decodeByteArray() очевидно обращает внимание на заголовки EXIF, в то время как многие программы просмотра изображений этого не делают. Nexus S ведет себя не так, как другие устройства Samsung, которые я тестировал до сих пор, и мне нужно немного поработать над этими заголовками для вывода Nexus S. Я добавил вопрос об этом, и я надеюсь, что скоро смогу поработать над этим.

Кстати, я также зарегистрировал запрос на улучшение, чтобы дать вам Bitmap через другого saveImage() метод, чтобы избежать необходимости декодировать byte[],

Другие вопросы по тегам