2

I want to use the android default cropping functionality to crop the bitmap present in imageview and then set that cropped bitmap to current imageview.This is my code but it does not work.Need help ...

ImageView iv;
final int CROP_PIC_REQUEST_CODE = 1;
String path;
Uri getUri;
Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    iv = (ImageView) findViewById(R.id.imageView);
    bitmap =     Bitmap.createBitmap(iv.getWidth(),iv.getHeight(),Bitmap.Config.RGB_565);

    Canvas canvas = new Canvas(bitmap);
    iv.draw(canvas);

    iv.setBackgroundResource(R.drawable.ally);

    // to get Uri of the imageview
    getUri = getImageUri(this, bitmap);

    //android cropping function
    doCrop();




    }

public void doCrop() {
    try {
        // cropping intent
        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        // Set data and type 
        cropIntent.setDataAndType(getUri, "image/*");
        cropIntent.putExtra("crop", "true");
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        cropIntent.putExtra("outputX", 128);
        cropIntent.putExtra("outputY", 128);
        cropIntent.putExtra("return-data", true);
        //start the activity for cropping
        startActivityForResult(cropIntent, CROP_PIC_REQUEST_CODE);
    }
    // respond to users whose devices do not support the crop action
    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);
        toast.show();
    }
}
    public Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
        return Uri.parse(path);
    }

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

    if (requestCode == CROP_PIC_REQUEST_CODE) {
        if (data != null) {
            // get the returned data
            Bundle extras = data.getExtras();
            // get the cropped bitmap
            bitmap= extras.getParcelable("data");
            //set the bitmap to imageview
            iv.setImageBitmap(bitmap);
        }
    }
}

0 Answers0