我使用this项目来创建一个应用程序,提示用户从图库中选择图像,让用户自由裁剪所选图像。
默认裁剪是矩形,但我想要的是圆形裁剪。经过大量的谷歌搜索,我终于找到了这个:
intent.putExtra("circleCrop", true);
听起来很有希望,不幸的是它没有效果。裁剪仍然是矩形。
这是我的完整代码:
intent.setData(mImageCaptureUri);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 200);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
intent.putExtra("circleCrop", true);
请帮助我。谢谢你的帮助
答案 0 :(得分:1)
由于不同的制造商为相机实现了自己的接口,下面的第一种方法并不适用于所有情况。例如,它运行在我的Nexus S运行库存2.3.6而不是我的Galaxy Nexus库存4.3。无论如何,如果您希望能够以默认裁剪操作以循环方式裁剪图像,请按以下方式调用它:
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
intent.setData(imageUri); // Uri to the image you want to crop
intent.putExtra("outputX", Constants.PROFILE_PICTURE_SIZE);
intent.putExtra("outputY", Constants.PROFILE_PICTURE_SIZE);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("circleCrop", new String(""));
intent.putExtra("return-data", false);
File cropImageFile = new File(CROP_IMAGE_PATH); // Path to save the cropped image
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(cropImageFile));
startActivityForResult(intent, CROP); // CROP = Code to track the result in onActivityResult
这应该启动默认裁剪应用程序,如下所示:
如果你已经通过commonsware阅读了这篇文章,那么你知道这并不总是有效。我建议在他的帖子中加入一个库。来自lvillani的第一个是CropImage活动提取的AOSP。包含库并使用与上面类似的意图调用它。确保在意图中包含circleCrop参数。