从android中的图库中选取图像后,使用圆形裁剪而不是默认的矩形裁剪

时间:2014-10-04 08:31:54

标签: android image

我使用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);

请帮助我。谢谢你的帮助

1 个答案:

答案 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

这应该启动默认裁剪应用程序,如下所示: Circular cropping

如果你已经通过commonsware阅读了这篇文章,那么你知道这并不总是有效。我建议在他的帖子中加入一个库。来自lvillani的第一个是CropImage活动提取的AOSP。包含库并使用与上面类似的意图调用它。确保在意图中包含circleCrop参数。

来自https://stackoverflow.com/posts/19640905/edit