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语言两个数组按位合并,合并两个线性表(
- 下一篇: 在c语言中039是不是int型,C数据类