2011-01-11 5 views
0

Мне было интересно, если можно сохранить изображения с предварительного просмотра камеры, возможно, 1 изображение каждые 2-3 секунды. любые примеры, которые вы можете мне дать?Захват изображения с камеры предварительного просмотра

Я нашел это как возможное решение, и я знаю, как сохранить изображение из массива байтов, но как я могу продолжить сохранение каждого кадра Nth? Я думал о том, чтобы хранить время безотказной работы системы и проверять ее в каждом фрейме, но кажется, что это лак. Есть ли способ лучше? Есть ли способ получить информацию, такую ​​как частота кадров предварительного просмотра?

Android: How to save a preview frame as jpeg image?

Тпх.

+0

http://www.anddev.org/advanced-tutorials-f21/image-capture-and-save-in-android-1-5 -t7895.html это ссылка может помочь вам –

ответ

2

Мне удалось преобразовать изображения из потока предварительного просмотра в полезный формат, используя представленный алгоритм YUV420-to-RGBhere. В моем приложении я также делаю это каждые 2-3 секунды для анализа цвета.

Вы можете написать подходящий Runnable и использовать Handler.postDelayed() (см. docs) для вызова цепи для соответствующего интервала. Вы также можете использовать Message и Handler.sendMessageDelayed() в сочетании с переопределением Handler.handleMessage() с тем же эффектом.

Ключевой идеей является включение кода для отправки (отложенного) другого идентичного сообщения в коде для обработки этого сообщения. Это позволяет осуществлять непрерывный захват. Будьте осторожны, чтобы очистить конвейер сообщений, когда вы в конечном итоге решите остановить свое приложение!

+0

Я также реализую эту функцию в своем приложении. Но я могу только захватить 1 кадр в режиме предварительного просмотра камеры. Я хотел бы захватить кадр каждые 5 секунд в режиме предварительного просмотра. Любой образец того, как этого достичь? Благодарю. U рок! – user1237183

1

Вы можете использовать CountDownTimer. Вы должны переопределить onPreviewFrame. Там вы вызываете YUV420. В вашем CountDownTimer вы можете вызывать собственный скриншот каждые 5 секунд. или вы используете ArrayList<Bitmap> и добавляете свои растровые изображения из onPreviewFrame. И после захвата скриншотов вы можете сохранить все битмапы ....

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