2015-12-16 181 views
0

當我點擊按鈕時,它會帶我到圖庫中選擇圖像,但會立即返回到沒有裁剪的活動當我選擇一個圖像。此外,圖像不顯示在imageView中。如何在從圖庫中獲取圖像並在圖像視圖中顯示圖像時剪裁圖像

這裏是我的代碼:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_camera); 

    imgview = (ImageView) findViewById(R.id.imageView1); 
    Button buttonCamera = (Button) findViewById(R.id.btn_take_camera); 
    Button buttonGallery = (Button) findViewById(R.id.btn_select_gallery); 
    buttonCamera.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

      intent.putExtra(MediaStore.EXTRA_OUTPUT, 
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString()); 

      intent.putExtra("crop", "true"); 
      intent.putExtra("aspectX", 0); 
      intent.putExtra("aspectY", 0); 
      intent.putExtra("outputX", 200); 
      intent.putExtra("outputY", 150); 

      try { 

       intent.putExtra("return-data", true); 
       startActivityForResult(intent, PICK_FROM_CAMERA); 

      } catch (ActivityNotFoundException e) { 

      } 
     } 
    }); 
    buttonGallery.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(); 

      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 

      intent.putExtra("crop", "true"); 
      intent.putExtra("aspectX", 0); 
      intent.putExtra("aspectY", 0); 
      intent.putExtra("outputX", 200); 
      intent.putExtra("outputY", 150); 

      try { 

       intent.putExtra("return-data", true); 
       startActivityForResult(Intent.createChooser(intent, 
         "Complete action using"), PICK_FROM_GALLERY); 

      } catch (ActivityNotFoundException e) { 

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

    if (requestCode == PICK_FROM_CAMERA) { 
     Bundle extras = data.getExtras(); 
     if (extras != null) { 
      Bitmap photo = extras.getParcelable("data"); 
      imgview.setImageBitmap(photo); 

     } 
    } 

    if (requestCode == PICK_FROM_GALLERY) { 
     Bundle extras2 = data.getExtras(); 
     if (extras2 != null) { 
      Bitmap photo = extras2.getParcelable("data"); 
      imgview.setImageBitmap(photo); 

     } 
    } 
} 
} 

回答

0

但它返回到活動不裁剪

,這是因爲,對於任何活動沒有要求任何地方,紀念那些隨機Intent演員,更不用說用戶爲您的特定請求選擇的任何活動(基於他們的設備並安裝了ACTION_IMAGE_CAPTUREACTION_GET_CONTENT活動)。你會注意到這些附加內容都沒有記錄在ACTION_IMAGE_CAPTUREACTION_GET_CONTENT上。

有很多image cropping libraries available for Android。使用一個。

此外圖像不顯示在imageView中。

這是因爲ACTION_GET_CONTENT沒有通過dataIntent額外的任何回報。使用Uri表示ACTION_GET_CONTENT返回(通過getData()獲得的Intent轉入onActivityResult())。將Uri提供給您最喜愛的圖像加載庫(Picasso,Universal Image Loader等)。

+0

你能分享任何鏈接,我可以得到正確的代碼嗎? –