Crop an Image by passing the image file path in Android

I have solved this by create a new file before calling Intent and passing this file path to store the cropped image through intent. Here is the solution for this.

private Uri mCropImagedUri;
private final int CROP_IMAGE = 100;//unique request code number. Which is used to identify the request result in onActivityResult()
/**Crop the image
 * @return returns <tt>true</tt> if crop supports by the device,otherwise false*/
private boolean performCropImage(){
    try {
            //call the standard crop action intent (the user device may not support it)
            Intent cropIntent = new Intent("");
            //indicate image type and Uri
            cropIntent.setDataAndType(mFinalImageUri, "image/*");
            //set crop properties
            cropIntent.putExtra("crop", "true");
            //indicate aspect of desired crop
            cropIntent.putExtra("aspectX", 1);
            cropIntent.putExtra("aspectY", 1);
            cropIntent.putExtra("scale", true);
            //indicate output X and Y
            cropIntent.putExtra("outputX", 500);
            cropIntent.putExtra("outputY", 500);
            //retrieve data on return
            cropIntent.putExtra("return-data", false);

            File f = createNewFile("CROP_");
            try {
            } catch (IOException ex) {
                VLLog.e("io", ex.getMessage());  

            mCropImagedUri = Uri.fromFile(f);
            cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCropImagedUri);
            //start the activity - we handle returning in onActivityResult
            startActivityForResult(cropIntent, CROP_IMAGE);
            return true;
    catch(ActivityNotFoundException anfe){
        //display an error message
        String errorMessage = "Whoops - your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);;
        return false;
    return false;

private File createNewFile(String prefix){
    if(prefix==null || "".equalsIgnoreCase(prefix)){
    File newDirectory = new File(Environment.getExternalStorageDirectory()+"/mypics/");
            VLLog.d(mContext.getClass().getName(), newDirectory.getAbsolutePath()+" directory created");
    File file = new File(newDirectory,(prefix+System.currentTimeMillis()+".jpg"));
        //this wont be executed
        try {
        } catch (IOException e) {

    return file;

So here we should not bother about the data which comes in onActivityResult() method.

Here is the complete information about cropping image. I have used this to solve.

Leave a Comment