首页 > 代码库 > Android -- 将NV21图像保存成JPEG
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 = http://www.mamicode.com/outputSteam.toByteArray(); //从outputSteam得到byte数据>
http://my.oschina.net/eclipse88/blog/80115
Android -- 将NV21图像保存成JPEG
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。