android PreviewCallback方法中获取图片

来源:互联网 发布:淘宝商家人工电话 编辑:程序博客网 时间:2024/06/11 00:07


在摄像头预览的时候,我们可以通过实现接口PreviewCallback方法可以得到每帧的视频数据,但获取的数据不能直接将数据保存为Bitmap,因为该预览帧数据使用android默认的NV21格式,需要进行转换为最常见的就是rgb和jpeg类型,NV21格式其实是一种YUV格式,这里提供方法转换成常用的Bitmap

该算法摘自网络:

http://www.cnblogs.com/mengyan/archive/2012/09/01/2666641.html

   public Bitmap decodeToBitMap(byte[] data, Camera _camera) {        if(data==null||_camera==null){            return null;        }        Camera.Size size = _camera.getParameters().getPreviewSize();        try {            YuvImage image = new YuvImage(data, ImageFormat.NV21, size.width,                    size.height, null);            if (image != null) {                ByteArrayOutputStream stream = new ByteArrayOutputStream();                image.compressToJpeg(new Rect(0, 0, size.width, size.height),                        80, stream);                Bitmap bmp = BitmapFactory.decodeByteArray(                        stream.toByteArray(), 0, stream.size());                stream.close();                return bmp;            }        } catch (Exception ex) {        }        return null;    }


0 0
原创粉丝点击