2015-09-22 2 views
1

Почему размер массива байтов данных различен для onPictureTaken (байт [] данные, камера камеры) и onPreviewFrame (байт [] данные, камера камеры). Первый имеет исходное изображение и, следовательно, дает мне чистый образ, а последний дает мне пикселированное изображение. Я не использую onPictureTaken, потому что иногда это не срабатывает. Если мой размер изображения составляет 1600 х 1400 и размер экрана составляет 800 х 480 onPictureTaken дает мне 1600 х 1400 и onPreviewFrame дает мне 800 х 480данные байт размер массива разный для onPictureTaken и onPreviewFrame

Это мой код:

mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() { 
      @Override 
      public void onPreviewFrame(byte[] data, Camera camera) { 
       Camera.Parameters parameters = camera.getParameters(); 
       int format = parameters.getPreviewFormat(); 
       //YUV formats require more conversion 
       if (format == ImageFormat.NV21 || format == ImageFormat.YUY2 || format == ImageFormat.NV16) { 
        int w = parameters.getPreviewSize().width; 
        int h = parameters.getPreviewSize().height; 
        // Get the YuV image 
        YuvImage yuv_image = new YuvImage(data, format, w, h, null); 
} 

У меня есть застрял в этом вопросе в течение одной недели.

P.S. - В случае отрицательных оценок, пожалуйста, укажите причину

ответ

0

Почему байт данных размер массива различен для onPictureTaken (Byte [], данные камеры камеры) и onPreviewFrame (байт [] данных, камера камеры).

Потому что это разные изображения с различными разрешениями в разных кодировках. Было бы чудо, если бы они были такого же размера.

Первыми имеет исходное изображение и, следовательно, дает мне чистое изображение и последнее дает мне пикселизированное изображение

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

Я не использую onPictureTaken, потому что он не получает срабатывает иногда

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

onPreviewFrame дает мне 800 х 480

Вы указываете разрешение предварительного просмотра в setPreviewSize() on Camera.Parameters.

+0

есть способ преобразования закодированного массива PreviewFrame в onPictureTaken? а также максимальный размер предварительного просмотра - 800 x 480. В пряниках иногда очень редко onPictureTaken не запускается. –

+1

@Rohit_Ramkumar: «Есть ли способ конвертировать закодированный массив PreviewFrame в onPictureTaken?» - 'onPictureTaken()' является методом. Невозможно сделать предварительный просмотр и преобразовать его в Java-метод. «а также максимальный поддерживаемый размер предварительного просмотра - 800 x 480» - возможно, на вашем устройстве, но размеры предварительного просмотра зависят от устройства. – CommonsWare

+0

Единственное решение onPictureTaken()? Я пытаюсь сфотографировать документы и загрузить их. Следовательно, документы должны быть удобочитаемыми. –

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