編輯照片:我發現這個問題是在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