標籤:des android io ar java for 檔案 資料 sp
方法一:
此方法會由Camera直接產生照片回傳給應用程式,但是返回的是壓縮圖片,顯示不清晰
/** 啟動Camera */private void intentCamera(){ try { Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, 0); } catch (ActivityNotFoundException e) { e.printStackTrace(); }}
/** 在onActivityResult中擷取圖片 */private void getImgFromCamera(){ Bundle bundle = data.getExtras(); bm = (Bitmap) bundle.get("data"); if (bm != null) bm.recycle(); bm = (Bitmap) data.getExtras().get("data"); if(bm != null){ img.setImageBitmap(bm); }}
方法二:
此方法所拍即所得,但是會在Sd卡上產生臨時檔案
/*** 開啟照相機 */private void intentCamera(){ Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); File file = new File(Environment.getExternalStorageDirectory() + "/Images"); if(!file.exists()){ file.mkdirs(); } Uri mUri = Uri.fromFile( new File(Environment.getExternalStorageDirectory() + "/Images/", "cameraImg" + String.valueOf(System.currentTimeMillis()) + ".jpg")); cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri); cameraIntent.putExtra("return-data", true); startActivityForResult(cameraIntent, 1);}
/*** 擷取相機返回的資料 */private void getImgFromCamera(){ ContentResolver cr = this.getContentResolver(); try { if(cameraBitmap != null) cameraBitmap.recycle();// 如果不釋放的話,不斷取圖片,將會記憶體不夠 cameraBitmap = BitmapFactory.decodeStream(cr.openInputStream(mUri)); if(bm != null){ img.setImageBitmap(bm); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block Log.e("error", "從相機中擷取圖片失敗====="); e.printStackTrace(); }}
Android從Camera中擷取圖片的兩種方法