1. 程式人生 > >Android 相機

Android 相機

directory width pic target dir nvi recycle map eof

 
case TAKE_PICTURE:
Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"image.jpg"));
//指定照片保存路徑(SD卡),image.jpg為一個臨時文件,每次拍照後這個圖片都會被替換
openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(openCameraIntent, TAKE_PICTURE)
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/image.jpg");
if(bitmap!=null) {
Bitmap newBitmap = ImageTools.zoomBitmap(bitmap, bitmap.getWidth() / SCALE, bitmap.getHeight() / SCALE);
//由於Bitmap內存占用較大,這裏需要回收內存,否則會報out of memory異常
bitmap.recycle();
//將處理過的圖片顯示在界面上,並保存到本地
iv_image.setImageBitmap(newBitmap);
ImageTools.savePhotoToSDCard(newBitmap, Environment.getExternalStorageDirectory().getAbsolutePath(), String.valueOf(System.currentTimeMillis()));
}
break;

一開始第一句話說我 permission denied,所以bitmap是null;
解決:targetSdk=22 時,按以往權限管理處理,修改targetsdk https://jingyan.baidu.com/article/f71d6037af54131ab741d16d.html

//                    Bundle extras =data.getExtras();
// if(extras!=null) {
// Bitmap bitmap = extras.getParcelable("data");
// iv_image.setImageBitmap(bitmap);

這種寫法圖片壓縮嚴重。

Android 相機