8

使用相机拍照后,我使用 com.android.camera.action.CROP 进行裁剪。

下面是我的代码,它曾经在 4.3 之前工作过。

Intent cropIntent = new Intent("com.android.camera.action.CROP");
                        cropIntent.setType("image/*");
                        cropIntent.putExtra("crop", "true");
                        cropIntent.putExtra("aspectX", 1);
                        cropIntent.putExtra("aspectY", 1);
                        cropIntent.putExtra("outputX", Conf.getInt("IMAGE_WIDTH"));
                        cropIntent.putExtra("outputY", Conf.getInt("IMAGE_HEIGHT"));
                        cropIntent.putExtras(extras);
                        startActivityForResult(cropIntent, CROP_REQUEST_CODE);

但是现在由于 android 裁剪操作将您带到图库(因为图库默认使用裁剪),因此这种裁剪方法失败(照片未保存到图库)。

有没有人知道解决这个问题的方法。我可以在从相机拍摄的照片上使用裁剪的地方

4

3 回答 3

9

复制之前提出的类似问题的答案..

您是否考虑过只使用这样的库:

GitHub链接

我发现 com.android.camera.action.CROP 有时会因手机而异,而且并不总是可用,所以如果你想发布它,它可能会给你带来一些问题。

更新:

我已经用 Android 4.3 测试了上面的库,它没有问题。您只需要将库添加到您的项目中。

然后,您可以以非常相似的方式编写您的方法:

private void performCrop(Uri picUri) {
//you have to convert picUri to string and remove the "file://" to work as a path for this library
String path = picUri.toString().replaceAll("file://", "");
try {
    int aspectX = 750;
    int aspectY = 1011;

    Intent intent = new Intent(this, CropImage.class);
    //send the path to CropImage intent to get the photo you have just taken or selected from gallery
    intent.putExtra(CropImage.IMAGE_PATH, path);

    intent.putExtra(CropImage.SCALE, true);

    intent.putExtra("aspectX", aspectX);
    intent.putExtra("aspectY", aspectY);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentPhotoPath)));

    startActivityForResult(intent, CROP);
}
catch (ActivityNotFoundException anfe) {
    String errorMessage = "Your device doesn't support the crop action!";
    Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
    toast.show();
}
于 2013-08-19T06:06:37.297 回答
1

根据@commonsware 的帖子
,此意图基于AOSP camera app在目标设备中可能可用或不可用,对于某些 4.3 设备,它可能工作,而对于某些设备则不能。因此,更好的方法是使用Android 库中的

任何开源库 (确保它们也不是基于.
AOSP

于 2015-07-16T12:52:08.890 回答
0

我已经尝试了几个croppers。特别是commonsware提到的那些维护得不是很好。例如,在元信息中使用旋转数据拍摄的图片旋转不好。我找到了这个:https ://android-arsenal.com/details/1/3487 ,它很棒。注意:确保添加带有操作栏主题的活动!

于 2016-06-22T15:55:56.763 回答