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