Android從Camera中獲取圖片的兩種方法

jopen 10年前發布 | 76K 次閱讀 Android Android開發 移動開發

方法一:

此方法會由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();
    }
}

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!