com.android.camera.action.CROP不适用于Android jelly bean 4.3吗?

时间:2013-08-02 09:29:57

标签: android camera

我使用相机拍照后用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裁剪操作会将你带到图库(因为图库默认使用裁剪),这种裁剪方法会失败(照片不会保存到图库中)。

是否有人知道摆脱这个问题的方法。我可以在相机拍摄的照片上使用裁剪

3 个答案:

答案 0 :(得分:9)

从早先提出的类似问题中复制答案..

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

GitHubLink

我发现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();
}

答案 1 :(得分:1)

根据@commonsware 's post This此意图基于AOSP camera app,目标设备可能会或可能不会,对于某些4.3设备,它可能会工作,而某些设备则不会。<登记/>
因此,更好的方法是使用找到at Android arsenal的任何开源库 (确保它们也不是基于AOSP)。

答案 2 :(得分:0)

我尝试了几个裁剪器。特别是commonsware提到的那些不能很好地维护。例如,使用元信息中的旋转数据拍摄的图片没有很好地旋转。我发现了这个:https://android-arsenal.com/details/1/3487而且很棒。注意:请确保使用操作栏主题添加活动!