2015-12-16 179 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

你能分享任何链接,我可以得到正确的代码吗? –