2012-01-28 2 views
3

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

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

ТИА

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

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

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

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

ответ

1

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

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

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

Возможно, если вы можете объяснить ситуацию, было бы более полезно.

+0

ravi, см. Мое редактирование для дополнительной информации ... –

+0

@ Dr.Dredel Я думаю, что это имеет какое-то отношение к вашему коэффициенту масштабирования, чем предварительный просмотр. Вам сначала нужно преобразовать координаты из источника устройства в начало изображения, а затем применить правильный коэффициент масштабирования, чтобы сопоставить его с оригинальным размером изображения. – bluefalcon

1

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

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

Таким образом, на некоторых устройствах есть какое-либо соединение, и мы действительно хотим знать, как исправить/обменивать это.