我正在尝试将相机中的预览帧保存在设备的外部存储中。
这些是我的清单中的权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这是 surfaceChanged() 内部的回调:
mCamera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
Size size = camera.getParameters().getPreviewSize();
frames++;
Log.v("Framecount", "Frame: " + frames + "Größe: " + data.length);
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
ByteArrayOutputStream outstr = new ByteArrayOutputStream();
Rect rect = new Rect(0, 0, width, height);
YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
yuvimage.compressToJpeg(rect, 100, outstr);
Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
Bitmap thumbnail = Bitmap.createScaledBitmap(bmp, 20, 20, false);
try {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/.aaaaaaaaa/");
dir.mkdirs();
File file = new File(dir, "filename.jpg");
FileOutputStream output = new FileOutputStream(file);
yuvimage.compressToJpeg(rect, 90, output);
output.flush();
output.close();
}
catch(Exception e) {
Log.v("Error", "Error");
}
}
});
在屏幕上显示预览帧不是问题,我只是无法保存它们。有谁知道可能出了什么问题?