Android图像存储格式,Android -- 将NV21图像保存成JPEG

//保存一张照片

String fileName = "IMG_" + String.valueOf(index) + ".jpg"; //jpeg文件名定义

File sdRoot = Environment.getExternalStorageDirectory(); //系统路径

String dir = "/jpeg/"; //文件夹名

File mkDir = new File(sdRoot, dir);

if (!mkDir.exists())

{

mkDir.mkdirs(); //目录不存在,则创建

}

File pictureFile = new File(sdRoot, dir + fileName);

if (!pictureFile.exists()) {

try {

pictureFile.createNewFile();

FileOutputStream filecon = new FileOutputStream(pictureFile);

YuvImage image = new YuvImage(data, ImageFormat.NV21, width, height, null); //将NV21 data保存成YuvImage

//图像压缩

image.compressToJpeg(

new Rect(0, 0, image.getWidth(), image.getHeight()),

70, filecon); // 将NV21格式图片,以质量70压缩成Jpeg,并得到JPEG数据流

}catch (IOException e)

{

e.printStackTrace();

}

}

该方法,常常在

Camera.PreviewCallback中采用:

@Override

public void onPreviewFrame(byte[] data, Camera camera) {

}

将NV21数据压缩成JPEG,并得到JPEG byte数据,解压JPEG byte数据成一张Bitmap

@Override

public void onPreviewFrame(byte[] bytes, Camera camera) {

YuvImage image = new YuvImage(bytes, ImageFormat.NV21, width, height, null); //ImageFormat.NV21 640 480

ByteArrayOutputStream outputSteam = new ByteArrayOutputStream();

image.compressToJpeg(new Rect(0, 0, image.getWidth(), image.getHeight()), 70, outputSteam); // 将NV21格式图片,以质量70压缩成Jpeg,并得到JPEG数据流

byte[] jpegData = outputSteam.toByteArray(); //从outputSteam得到byte数据

Options options = new BitmapFactory.Options();

options.inSampleSize = 1;

Bitmap bmp = BitmapFactory.decodeStream(jpegData, null, options);

}

http://my.oschina.net/eclipse88/blog/80115

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值