编辑照片:我发现这个问题是在onPreviewFrame功能:如何保存从摄像头的Android
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
if (frameCount == 0) {
start = System.currentTimeMillis();
} else if (frameCount % 100 == 0) {
Log.e("FPS", 1000 * frameCount
/(System.currentTimeMillis() - start) + "");
}
frameCount++;
Bitmap temp = BitmapFactory.decodeByteArray(data, 0, data.length);
try {
temp.compress(CompressFormat.JPEG, 90, new FileOutputStream(new File("/sdcard/"+frameCount+".jpg")));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
camera.addCallbackBuffer(data);
}
如果我删除所有位图,则程序可以拍照没有任何错误相关的代码。我怎样才能保存帧图像和使用Camera.takePicture生成的更好的图像? 当按下按钮时,我尝试保存照相机中的照片,并开始另一个活动以编辑照片。
mTakePic.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mTakePic.setImageDrawable(takePicDown);
mCamera.takePicture(new ShutterCallback() {
@Override
public void onShutter() {
// TODO Auto-generated method stub
}
}, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] yuv, Camera camera) {
Intent editImage = new Intent(getApplicationContext(), EditActivity.class);
if(savePhoto != null) {
try {
savePhoto.get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
savePhoto = new SavePhotoTask();
savePhoto.execute(yuv);
// releaseCamera();
startActivity(editImage);
}
});
} else if (event.getAction() == MotionEvent.ACTION_UP) {
mTakePic.setImageDrawable(takePicUp);
}
return true;
}
});
有时它顺利运行没有错误,但大多数时候它结束了一个错误,我不得不重新启动我的电话让相机重新工作。我使用了SurfaceView来预览相机画面。
谢谢@MattDavis,但这不是我的问题的答案。我编辑了这个问题,请看看它 – 2013-04-26 19:09:19
我已经编辑了我的回答,以显示如何保存,请告诉我是否有帮助。 – MattDavis 2013-04-29 17:16:47