android PreviewCallback方法中获取图片

原创 2016年05月30日 14:00:41


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


Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用

很多时候,android摄像头模块不仅预览,拍照这么简单,而是需要在预览视频的时候,能够做出一些检测,比如最常见的人脸检测。在未按下拍照按钮前,就检测出人脸然后矩形框标示出来,再按拍照。那么如何获得预...
  • yanzi1225627
  • yanzi1225627
  • 2013年02月23日 14:23
  • 69838

从WebView获取图片的几种方式

微信在浏览网页的时候,我们可以选择长按图片,然后会弹出对话框,询问我们要做什么——保存啊,收藏啊什么的。恰好项目中要用到这个功能,就小做了一番研究, 各种找资料看博客浏览源码,总结了几种方式,特此记录...
  • sollian
  • sollian
  • 2017年01月05日 15:53
  • 2320

用MediaRecorder实现简单的录像功能

思路:定义一个SurfaceView用来显示预览,在SurfaceHolder的回调中用Camera对象启动预览,然后调用MediaRecorder来录像。 代码如下: 在AndroidManifes...
  • shineflowers
  • shineflowers
  • 2015年08月18日 13:31
  • 8076

Android开发:实时处理摄像头预览帧视频--浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用

Camera.PreviewCallback:定义了onPreviewFrame(byte[] data, Camera camera) 方法,当存在预览帧(preview frame)时调用该方法。...
  • cainiaoxiaozhou
  • cainiaoxiaozhou
  • 2013年06月28日 17:18
  • 6357

Android Camera的预览回调接口PreviewCallback使用

首先定义一个类实现Camera.PreviewCallback接口,然后在它的onPreviewFrame(byte[] data, Camera camera)方法中即可接收到每一帧的预览数据,也就...
  • lb377463323
  • lb377463323
  • 2016年11月25日 17:54
  • 6680

Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback

很多时候,android摄像头模块不仅预览,拍照这么简单,而是需要在预览视频的时候,能够做出一些检测,比如最常见的人脸检测。在未按下拍照按钮前,就检测出人脸然后矩形框标示出来,再按拍照。那么如何获得预...
  • dengweijunkedafu
  • dengweijunkedafu
  • 2014年08月21日 21:13
  • 1012

Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用

很多时候,android摄像头模块不仅预览,拍照这么简单,而是需要在预览视频的时候,能够做出一些检测,比如最常见的人脸检测。在未按下拍照按钮前,就检测出人脸然后矩形框标示出来,再按拍照。那么如何获得预...
  • easyer2012
  • easyer2012
  • 2013年08月21日 08:21
  • 1217

Android Camera2教程之打开相机、开启预览、实现PreviewCallback、拍照

Android API21新增了camera2,这与之前的camera架构完全不同,使用起来也比较复杂,但是功能变得很强大。...
  • lb377463323
  • lb377463323
  • 2016年10月05日 20:32
  • 11383

Android Camera2教程之打开相机、开启预览、实现PreviewCallback、拍照

转载请注明出处: http://blog.csdn.net/lb377463323/article/details/52740411Android API 21新增了Camera2,这与之前的came...
  • fengshiguang2012
  • fengshiguang2012
  • 2017年12月20日 10:49
  • 151

Android开发:实时处理摄像头预览帧视频------浅析PreviewCallback,onPreviewFrame,AsyncTask的综合应用

很多时候,android摄像头模块不仅预览,拍照这么简单,而是需要在预览视频的时候,能够做出一些检测,比如最常见的人脸检测。在未按下拍照按钮前,就检测出人脸然后矩形框标示出来,再按拍照。那么如何获得预...
  • shanghaibao123
  • shanghaibao123
  • 2015年01月15日 23:05
  • 408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android PreviewCallback方法中获取图片
举报原因:
原因补充:

(最多只允许输入30个字)