在onPreviewFrame中获取图片

在onPreviewFrame中获取图片

  • 在onPreviewFrame获取帧图片
  • byte[]转bitmap的坑

> 有个需求,要求在扫码页做到拍照的操作,满心欢喜的onPreviewFrame->decodeByteArray(data)
->savaBitmap,完成,突如其来的告诉我bitmap==null,但是进行扫码处理是正常的,数据源没有问题,搜了很久,找到了问题出在decodeByteArray上了,需要预处理
Camera.Size previewSize = camera.getParameters().getPreviewSize();//获取尺寸,格式转换的时候要用到
BitmapFactory.Options newOpts = new BitmapFactory.Options();
                newOpts.inJustDecodeBounds = true;
                YuvImage yuvimage = new YuvImage(
                        data,
                        ImageFormat.NV21,
                        previewSize.width,
                        previewSize.height,
                        null);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 100, baos);// 80--JPG图片的质量[0-100],100最高
                byte[] rawImage = baos.toByteArray();
                //将rawImage转换成bitmap
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inPreferredConfig = Bitmap.Config.RGB_565;
                Bitmap bitmap = BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length, options);

原文章:https://blog.csdn.net/qiguangyaolove/article/details/53130061

你可能感兴趣的:(Android笔记)