android nv21图片格式,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);
}
总结
以上是生活随笔为你收集整理的android nv21图片格式,Android -- 将NV21图像保存成JPEG的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: c语言两个数组按位合并,合并两个线性表(
- 下一篇: android设计招式之美,麦可网And