//点击事件
public void onClickPhoto(View v) {
int[] rgb = new int[Cmd.w_h*3];
Bitmap bitmap = YUV2RGBABitmap2(Cmd.bufferlocal,rgb, 480, 640);
saveImage(bitmap);
}
//此方法为yuyv数据 ,提取Y分量,只要黑白元素,转为BMP图片
static public Bitmap YUV2RGBABitmap2(byte[] yuv, int[] rgb , int width, int height) {
int y = 0;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
int dex = (i * width + j)*2;
y = 0xff & yuv[dex];
rgb[i*width + j] = 0xff000000| y << 16 | y << 8 | y;
}
}
Bitmap bmp = Bitmap.createBitmap(rgb,width, height, Bitmap.Config.ARGB_8888);
return bmp;
}
public String saveImage(Bitmap bmp) {
File appDir = new File(Environment.getExternalStorageDirectory(), "a");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = System.currentTimeMillis() + ".bmp";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
// fos.write(bmp);
// writeBytesToFile(Cmd.bufferlocal,Cmd.bufferlocal.length,fos);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return file.getAbsolutePath();
}
网友评论