я пытаюсь получить байт [] из предварительного просмотра камеры, преобразовать его в растровое изображение и отображать его на ImageView с imageView.setImageBitmap()OnPreviewFrame данные изображения для ImageView
я уже успел запустите предварительный просмотр и отобразите его на поверхностном экране, но я не знаю, как преобразовать данные байта [] (которые входят в формат Yuv, я думаю) в растровое изображение RGB, чтобы отобразить его на изображении.
код, который я пытаюсь следующий:
camera = camera.open();
parameters = camera.getParameters();
camera.setParameters(parameters);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
camera.setPreviewDisplay(surfaceHolder);
camera.setPreviewCallback(this);
camera.startPreview();
и предварительный обратный вызов этого
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
ByteArrayOutputStream outstr = new ByteArrayOutputStream();
Rect rect = new Rect(0, 0, width, height);
YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
yuvimage.compressToJpeg(rect, 100, outstr);
Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
imgView1.setImageBitmap(bmp);
}
В окне предварительного просмотра работает, но ImageView остается пустым
Любая идея?
где вы установили imageView.setImageBitmap (BMP); ? – Hardik
После Bitmap bmp = BitmapFactory.decodeByteArray (outstr.toByteArray(), 0, outstr.size()); – Pitr
убедитесь, что outstr.size()! = 0 !!? – Hardik