Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 2);
intent.putExtra("aspectY", 3);
//
intent.putExtra("outputX", 511);
//
//
intent.putExtra("outputY", 800);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); // no face detection
看到网上的demo,我们调用系统剪裁时一般都会设置这几个参数,但是问题来了,当我们定义了返回的图片大小过大,而我们实际的图片像素达不到时,系统为我们自动地填充了不够的像素成黑色,也就是其实剪裁出来的图片只是中间部分是我们想要的,其他的都是黑色的。怎么解决的呢:
1.// intent.putExtra("outputX", 511);
//
// intent.putExtra("outputY", 800); 不要这2个参数
2. 网上答案 加上这2个参数
intent.putExtra("scale",true);
intent.putExtra("scaleUpIfNeeded", true);