Захват предварительного просмотра камеры и GLSurfaceView в файл - PullRequest
1 голос
/ 06 апреля 2011

Я пытаюсь «сфотографировать» как предварительный просмотр камеры, так и наложенный GLSurfaceView. У меня есть элемент предварительного просмотра камеры, работающий через camera.takePicture () и PictureCallback (), но теперь мне нужно либо включить элементы GLSurfaceView, либо отдельно захватить текущий экран и объединить два растровых изображения в один файл. Я попытался получить изображение из SurfaceView, используя приведенный ниже код, но это просто приводит к нулевому растровому изображению.

</p> <pre><code>public Bitmap grabImage() { this.setDrawingCacheEnabled(true); Bitmap b = null; try { b = this.getDrawingCache(true); if (b==null) { b = this.getDrawingCache(true); } } catch (Exception e) { e.printStackTrace(); } this.setDrawingCacheEnabled(false); return b; }

Буду признателен за любые мысли / фрагменты по этому поводу. Большое спасибо заранее.

1 Ответ

0 голосов
/ 07 апреля 2011

Я сделал нечто подобное, и это было немного запутанно, но не слишком ужасно.

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

Кроме того, основная причина, по которой я использую кадры предварительного просмотра, а не захваченные изображения, связана с ограничением памяти.Очень немногие телефоны поддерживают изображения небольшого размера, но все поддерживают разумные размеры для предварительного просмотра.Получение полноразмерного изображения с камеры в растровое изображение, вероятно, слишком много памяти.На устройствах с кучей менее 24 МБ у меня все в порядке с изображением 600 x 480 и примерно 4 видами, которые рисуются поверх этого, но затягиваются.

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

Удачи!

...