Как Android обрабатывает различия между размером / соотношением предварительного просмотра и фактическим размером SufaceView?

Я пишу небольшое приложение для Android, в котором пользователь может поместить изображение в предварительный просмотр камеры в реальном времени и сфотографировать его.Затем приложение соответствующим образом объединит два изображения - все это работает нормально.

Я понимаю, что вы можете получить / установить PreviewSize с помощью Camera.getParameters (), я предполагаю, что это связано с размером "канала камеры" в реальном времени.

Однако размер моего SurfaceView, в котором отображается предварительный просмотр камеры, отличается от заявленных (и используемых) PreviewSizes. Например, в эмуляторе мой доступный SurfaceView имеет размер 360x215, а PreviewSize - 320x240. Тем не менее, весь SurfaceView заполнен предварительным просмотром.

Но изображение, которое создается в итоге, имеет (тоже?) 320x240. Как Android компенсирует эти различия в размере и соотношении сторон? Обрезано ли изображение?

Или я просто неправильно понимаю, что такое PreviewSize - связано ли это с размером сгенерированных изображений или с «предварительным просмотром в реальном времени», проецируемым на SurfaceView? Есть ли какие-нибудь нетривиальные примеры камер, которые справляются с этим?

Мне нужно знать, как происходит преобразование, чтобы в конечном итоге правильно скопировать / масштабировать изображение в фотографию, отсюда и эти вопросы.

8
задан Ivo van der Wijk 11 January 2012 в 11:09
поделиться