code: public static Intent cropImage(Context context, File image, int outputX, int outputY, int aspectX, int aspectY, boolean scale) {
          Intent intent = new Intent("com.android.camera.action.CROP");
          intent.setType("image/*");
  
          List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent, 0);
          ResolveInfo res = list.get(0);
  
          intent.putExtra("outputX", outputX);
          intent.putExtra("outputY", outputY);
          intent.putExtra("aspectX", aspectX);
          intent.putExtra("aspectY", aspectY);
          intent.putExtra("scale", scale);
          intent.putExtra("return-data", true);
          intent.setData(Uri.fromFile(image));
  
          intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
          return intent;
      }
docs: Crop image. Before using, cropImage requires especial check that differs from
  {@link #isIntentAvailable(android.content.Context, android.content.Intent)}
  see {@link #isCropAvailable(android.content.Context)} instead
  
  @param context Application context
  @param image   Image that will be used for cropping. This image is not changed during the cropImage
  @param outputX Output image width
  @param outputY Output image height
  @param aspectX Crop frame aspect X
  @param aspectY Crop frame aspect Y
  @param scale   Scale or not cropped image if output image and cropImage frame sizes differs
  @return Intent with <code>data</code>-extra in <code>onActivityResult</code> which contains result as a
  {@link android.graphics.Bitmap}. See demo app for details