2013-08-29 1 views
2

Я применил некоторые эффекты для предварительного просмотра камеры с помощью шейдеров OpenGL ES 2.0. Далее я хочу сохранить эти эффекты (полутоновые, негативные ...)Как сохранить изображение (применяемые эффекты glsl), снятые камерой в Android?

Я вызываю glReadPixels() в onDrawFrame(), создаю растровое изображение на основе пикселей, которые я читал из буфера кадра opengl, а затем сохраняю его хранения устройств.

Однако, таким образом, я только «снимок» просматривает эффект камеры. Другими словами, сохраненное разрешение изображения (например: 800 * 480) не совпадает с изображением, сделанным Camera.PictureCallback (например: 1920 * 1080).

Я знаю, что размер предварительного просмотра может быть изменен с помощью setPreviewSize(), но в конечном итоге он не может быть равен размеру изображения.

Итак, можно ли использовать glsl shader, чтобы отправить процесс напрямую, чтобы получить изображение Camera.PictureCallback? Или есть другой способ достичь той же цели?

Любое предложение будет принята с благодарностью. Спасибо.

+0

Я считаю, что 800 × 480 не является размером предварительного просмотра камеры, но размер буфера экрана –

+0

@fen: Я уже применил эффекты OpenGL для предварительного просмотра камеры. Мой вопрос - как его сохранить. – Justin

+0

@AlexCohn: а? Я получил 800x480 из getSupportedPreviewSizes(). – Justin

ответ

0

Justin, это был мой вопрос о setPreviewTexture(), а не предложение. Если вы отправляете данные пикселя, полученные из обратного вызова onPreviewFrame(), это, естественно, будет ограничено поддерживаемыми размерами предварительного просмотра.

Вы можете использовать ту же логику, чтобы нажимать пиксели от onPictureTaken() до текстуры, но вы должны декодировать их в формате RGB из JPEG.

 Смежные вопросы

  • Нет связанных вопросов^_^