关闭

android PreviewCallback方法中获取图片

1037人阅读 评论(0) 收藏 举报
分类:


在摄像头预览的时候,我们可以通过实现接口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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:500415次
    • 积分:4334
    • 等级:
    • 排名:第7213名
    • 原创:61篇
    • 转载:62篇
    • 译文:0篇
    • 评论:62条
    最新评论