android PreviewCallback方法中获取图片

在Android中,通过实现PreviewCallback接口可以从摄像头预览获取NV21格式的视频帧数据。由于NV21数据无法直接保存为Bitmap,需要将其转换。这里介绍了将NV21数据转化为Bitmap的方法,方便进一步处理或保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值