Как предварительный просмотр камеры связан с окончательным выводом изображения? - PullRequest
3 голосов
/ 28 января 2012

У меня всегда было впечатление, что предварительный просмотр и окончательный вывод никак не связаны; Это означает, что я могу установить предварительный просмотр для произвольного измерения и что конечный JPG будет иметь любое конкретное разрешение, которое я установил в параметрах, но я просто столкнулся с очень странной ситуацией, когда данные изображения возвращаются в байте [ ] это в обратном вызове jpg отличается, в зависимости от того, какие размеры я установил мой предварительный просмотр.

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

ТИА

[Изменить] Согласно ответу Рави, это было и мое предположение, однако я не вижу другой альтернативы, кроме как предположить, что они, на самом деле, напрямую связаны на основе доказательств. При необходимости я выложу код (хотя его много), но вот что я делаю.

У меня есть экран предварительного просмотра, где пользователь фотографирует себя. Затем я отображаю захваченное изображение (из растровых данных обратного вызова jpg) в последующем режиме рисования и позволяю им обвести форму поверх их фотографии. Затем я передаю точки их многоугольника в класс, который вырезает эту форму из исходного изображения и возвращает вырезанное изображение.

Все это работает, НО в зависимости от того, как я представляю PREVIEW, класс полигональной резки падает на массиве вне индекса границ, когда он пытается получить доступ к пикселям на конечном изображении, которые просто не существуют. Этот эффект создается ИСКЛЮЧИТЕЛЬНО, изменяя форму размеров предварительного просмотра. Я больше ничего не изменяю в коде, и все же, просто неправильно сформировав свой предварительный просмотр, я могу воспроизвести эту ошибку 100% времени.

Я не вижу объяснения, кроме того, что предварительный просмотр и финал каким-то образом напрямую связаны, так как я никогда не работаю с данными предварительного просмотра, я только отображаю их в SurfaceView и затем перехожу к работе исключительно с данные из обратного вызова JPG после того, как пользователь сделал их фотографию.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

В настоящее время мы разрабатываем приложение для камеры и сталкиваемся с очень похожими проблемами.В нашем случае мы хотим отобразить предварительный просмотр в формате 16: 9 и сделать снимок в формате 4: 3.На большинстве устройств это работает без проблем, но на некоторых (например, Galaxy Nexus, LG Optimus 3D) выходное изображение с камеры зависит от выбранного вами предварительного просмотра.В нашем случае исходные изображения на этих устройствах искажаются, когда коэффициент предварительного просмотра отличается от коэффициента предварительного просмотра.

Мы попытались исправить это, изменив разрешение предварительного просмотра на лучшее перед захватом изображения.Но это не работает на некоторых устройствах и происходит ошибка при повторном запуске предварительного просмотра после завершения захвата.Мы также попытались это исправить, увеличив SurfaceView до полноэкранной ширины и «на весь экран», чтобы сделать предварительный просмотр 16: 9 из предварительного просмотра 4: 3.Но это не работает, потому что SurfaceViews не может быть выше, чем высота экрана.

Так что на НЕКОТОРЫХ устройствах есть какое-либо соединение, и мы действительно хотим знать, как это исправить / обойти это.

1 голос
/ 28 января 2012

Нет никакого отношения между разрешением предварительного просмотра и полученным конечным изображением.

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

В приложении камеры, которое я написал, предварительный просмотр всегда VGA, но изображение, которое я получаю, варьируется от 5 м до VGA (в зависимости от возможностей устройства)это было бы более полезно.

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