Android 調用照相機功能,取得照片原圖、縮圖的方法

By Unknown - 8:05 下午

 Android 調用照相機功能,取得照片原圖、縮圖的方法

最近在研究可以開啟手機相機功能,拍完照取出照片的方法。爬了許多文章,發現光是開啟相機前置處理就會影響取出相片時的處理方法。

最基本的調用相機方法:

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(intent, 0);


Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
這行就是利用intent去開啟Android的照相機介面,再然後拍完照,即呼叫onActivityResult

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);

          if (resultCode == RESULT_OK) {
               Bitmap mbmp = (Bitmap) data.getExtras().get("data");
               imgMicro.setImageBitmap(mbmp);
          }
     }


而(Bitmap) data.getExtras().get("data"); 就可以取到照片的"縮圖",沒有錯!只是縮圖。官方文件有說明,android系統分配給每個應用程式的最大內存記憶體是16M,為了防止佔用內存記憶體過大(OutOfMemory),所以把相機拍完回傳的照片經過壓縮。但是我想要再拍完照後可以直接取到原圖,有許多前輩對於這樣情況,對於叫用相機前startActivityForResult(intent, 0); 做了一些修改。

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File tmpFile = new File(Environment.getExternalStorageDirectory(),"image.jpg");
    Uri outputFileUri = Uri.fromFile(tmpFile);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(intent, 0);


File tmpFile = new File(Environment.getExternalStorageDirectory(),"image.jpg");
這行是 利用tmpFile先新增一張照片。在開啟Android的照相機介面時,把這張照片指定為輸出檔案位置。


     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          if (resultCode == RESULT_OK) {
               Bitmap bitmap = BitmapFactory.decodeFile(Environment
               .getExternalStorageDirectory() + "/image.jpg");
               imgLarge.setImageBitmap(bitmap);
          }
     }

拍完照將結果回傳時,可以透過 Environment.getExternalStorageDirectory() + "/image.jpg" 取得我們指定的圖片路徑。



這時侯Intent data則取不到縮圖資料了,若想要取得縮圖就要自己用bitmap原圖去產生縮圖。

    Bitmap minibm = ThumbnailUtils.extractThumbnail(bitmap, minWidth, minHeight);

minWidth 是縮圖的寬度
minHeight 是縮圖的長度



  • Share:

You Might Also Like

0 意見