2

我试图从Android摄像头捕获图像/从图库中选取图像,然后在对其执行其他操作之前对其进行裁剪。我无法取回裁剪图像的URI。任何关于如何获取图像的URI一旦被裁剪的帮助将非常感谢!Android从意图获取裁剪图像的URI

下面的代码涉及到我的onActivityResult和我的功能行selectedImageUri = data.getData(),其中data.getData()返回空后已经做了农作物进行作物

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK) { 
     if (requestCode == SELECT_FILE || requestCode == REQUEST_IMAGE_CAPTURE) { 
      if(!IS_CAMERA_USED) { 
       selectedImageUri = data.getData(); 
      } 
      performCrop(); 
     } 
     else if(requestCode == CROP_IMAGE){ 
      selectedImageUri = data.getData(); 
      onSelectedImageResult(); 
     } 
    } 
} 



    public void performCrop() { 
    // take care of exceptions 
    Display display = getWindowManager().getDefaultDisplay(); 
    try { 
     // call the standard crop action intent (the user device may not 
     // support it) 
     Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
     // indicate image type and Uri 
     cropIntent.setDataAndType(selectedImageUri, "image/*"); 
     // set crop properties 
     cropIntent.putExtra("crop", "true"); 
     // indicate aspect of desired crop 
     cropIntent.putExtra("aspectY", 1); 
     if(IS_PROFILE_PICTURE) { 
      cropIntent.putExtra("aspectX", 1); 
     } 
     else { 
      cropIntent.putExtra("aspectX", 2); 
     } 
     // indicate output X and Y 
     cropIntent.putExtra("outputX", display.getWidth()); 
     cropIntent.putExtra("outputY", display.getHeight()); 
     // retrieve data on return 
     cropIntent.putExtra("return-data", true); 
     // start the activity - we handle returning in onActivityResult 
     startActivityForResult(cropIntent, CROP_IMAGE); 
    } 
    // respond to users whose devices do not support the crop action 
    catch (ActivityNotFoundException anfe) { 
     Toast toast = Toast 
       .makeText(this, "This device doesn't support the crop action!", Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

的问题。如何找回裁剪图像的URI?我不想得到data.getExtras.getParcelable("data"),因为它会返回缩略图并且会破坏图像分辨率。

在此先感谢!

+0

[ Android没有'CROP''Intent'](https://commonsware.com/blog/2013/01/23/no-android-does-not-have-crop-intent.html)。有很多[可用于Android的图像裁剪库](https://android-arsenal.com/tag/45)。请使用一个。 – CommonsWare

回答

0

您可以使用此代码获取图像的位图:

if (requestCode == CROP_IMAGE) { 
    if (data != null) { 
     Bundle extras = data.getExtras(); 
     if (extras != null) { 
      Bitmap selectedBitmap = extras.getParcelable("data"); 

      //imgView.setImageBitmap(selectedBitmap); 
     } 
    } 
} 

URI是不可能的,我认为,这是因为裁剪图像不保存在存储。

0

感谢您的答案,但我发现了一些简单的方式纳入和使用,避免所有的麻烦,由于`com.android.camera.action.CROP”类,并且可以发现here