Camera YUV数据转换Jpeg图片格式并保存到本地
private void saveYuv2Jpeg(String path, byte[] data) {
YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, mWidth, mHeight, null);
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
boolean result = yuvImage.compressToJpeg(new Rect(0, 0, mWidth, mHeight), 80, bos);
if (result) {
byte[] buffer = bos.toByteArray();
File file = new File(path);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(buffer);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Camera YUV数据转换Bitmap图片格式并保存到本地
private void saveYUV2Bitmap(byte[] data) {
ByteArrayOutputStream stream = null;
try {
YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, PREVIEW_WIDTH, PREVIEW_HEIGHT,null);
if (yuvImage != null) {
stream = new ByteArrayOutputStream();
yuvImage.compressToJpeg(new Rect(0, 0, PREVIEW_WIDTH, PREVIEW_HEIGHT), 100, stream);
Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());
mPictureName =保存路径名;
File saveFile = new File(mPictureName);
try {
FileOutputStream fileOutputStream = new FileOutputStream(saveFile);
bmp.compress(Bitmap.CompressFormat.JPEG, 80, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}