[英]How to store image captured using camera.takePicture(null,null,mPicture) so that it can be displayed it in next activity?
我在android中制作自定義camera
應用程序。 我使用捕獲image
camera.takePicture(null,null,mPicture)" and "Camera.PictureCallBack()
我想存儲從camera
拍攝的image
,以便我可以在下一個activity
顯示它。 如何做呢?
Camera.PictureCallback mPicture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile();
if (pictureFile == null) {
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
};
private static File getOutputMediaFile() {
File mediaStorageDir = new File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"MyCameraApp");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("MyCameraApp", "failed to create directory");
return null;
}
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator
+ "IMG_" + timeStamp + ".jpg");
return mediaFile;
}
將uri傳遞給您下一個活動意圖的額外內容
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == SELECT_PICTURE_USING_CAMERA) {
try {
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
i.putExtra("uri",outputFileUri);
startActivity(i);
} catch (Exception ex) {
Log.e("Exception", ex.toString());
}
}
}
}
然后在第二個活動中檢索圖像
Uri = getIntent().getExtras("uri");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
final Bitmap capturedimage = BitmapFactory.decodeFile(uri, options);
imgPreview.setImageBitmap(capturedimage );
打開相機
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, SELECT_PICTURE_USING_CAMERA);
然后需要實現onActivityResult來獲取數據。
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == SELECT_PICTURE_USING_CAMERA) {
try {
final File file = new File(outputFileUri.getPath());
} catch (Exception ex) {
Log.e("Exception", ex.toString());
}
}
}
}
然后,您可以從file
路徑中獲取圖像以在下一個活動中顯示。
您可以使用CameraView以非常簡單的方式實現自定義相機,從而為您提供捕獲圖像和視頻的功能。 您可以看到CameraActivity拍攝照片的DEMO , PicturePreviewActivity和VideoPreviewActivity用於預覽CameraActivity拍攝的照片和視頻。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.