У меня есть приложение с функцией камеры. Я использую Android Camera2 API. Я обнаружил, что некоторые Android устройства (например, Nexus 6p, Nexus 5) работают лучше, если ImageReader
сконфигурирован для обеспечения JPEGs:Как выбрать тип буфера ImageReader для моего приложения для камеры Android?
imageReader = ImageReader.NewInstance(width, height, ImageFormatType.Jpeg, 2);
и некоторые Android устройств (например, Nexus 7 2013) работают лучше, если ImageReader
является сконфигурирован для обеспечения, скажем, RGBA_8888
:
imageReader = ImageReader.NewInstance(width, height, (ImageFormatType)1 /* PixelFormat.RGBA_8888 */, 2);
устройство, которое работает лучше с JPEGs выплевывает эту ошибку, если я использую RGBA_8888
:
[ImageReader_JNI] Producer output buffer format: 0x22, ImageReader configured format: 0x1
Устройство, которое работает лучше с RGBA буферов выплевывает это предупреждение, если я использую JPEGs: (Он по-прежнему работает, но это достаточно медленно, что захваченное изображение темное.)
[ImageReader_JNI] ImageReader_lockedImageSetup: Receiving JPEG in HAL_PIXEL_FORMAT_RGBA_8888 buffer.
Я должен сделать некоторую обработку я вернусь, так что в конечном итоге было бы лучше, если бы я мог настроить камеру, чтобы просто выплескивать какой-то растровый рисунок, а не JPEG, так как мне нужно преобразовать JPEG в Bitmap
, прежде чем продолжить.
Как выбрать тип буфера для перехода к ImageReader
?
Каков ваш прецедент? Одиночные снимки (не много захватов в секунду) или непрерывный захват (~ 30 кадров в секунду)? –
У меня есть поверхность предварительного просмотра, которая захватывает непрерывный захват до тех пор, пока вы не нажмете кнопку «Снимок», и в этот момент она захватывает изображение «ImageReader». –