Android: 编辑图像意图

9
我发现很多人都在问如何裁剪图片,但是有没有一种通过意图启动编辑图片活动的方法。我尝试使用com.android.camera.action.EDIT,但它不起作用。我的目标是当我点击一个按钮时,启动编辑图片的活动,就像下面图片中的那个一样:

enter image description here

这就像当我从相册打开一张图片并从菜单中点击“编辑”一样。
3个回答

17
Intent editIntent = new Intent(Intent.ACTION_EDIT);
editIntent.setDataAndType(uri, "image/*");
editIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(editIntent, null));

5
你应该在你的回答中添加一些解释! - Alexandre Lavoie
如果你使用startActivityForResult(),那么图片编辑器会有三种可能的结果。用户要么编辑了图像并且resultCode是Activity.RESULT_OK,要么用户没有进行任何编辑并点击了DoneSave(取决于编辑器),这将返回一个resultCode为Activity.RESULT_CANCELED,或者用户按下后退按钮,这将返回一个resultCode为Activity.RESULT_CANCELED。为什么最后两个选项返回相同的resultCode值?你如何区分这两个选项? - Etienne Lawlor
在我的情况下,用户只能按“保存”按钮,而没有任何其他操作会触发Activity.RESULT_OK。你是如何做到的?在调用意图时是否还应设置其他参数? - Yusril Maulidan Raji
显示给我“没有应用程序可以执行此操作” - luke cross

2
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(yourimageuri, "image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", 640);
        intent.putExtra("outputY", 640);
        intent.putExtra("scale", true);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outPath);
        intent.putExtra("return-data", false);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true);
        startActivityForResult(intent, CAMERA_CROP_RESULT);

2
这仅用于裁剪图像。我想要像上面图片中的所有编辑选项。 - nikmin
尝试使用 com.android.camera.action.EDITOR_CROP。 - Jiang Qi
你可以浏览Android 4.2相册的AndroidManifest.xml https://android.googlesource.com/platform/packages/apps/Gallery2/+/android-cts-4.2_r2/AndroidManifest.xml ,搜索“com.android.camera.action”。 - Jiang Qi
“EDITOR_CROP”是我正在寻找的东西。有没有一种方法可以启动它,但不启动裁剪。只需启动编辑器并让用户选择他想要做什么。我尝试删除“intent.putExtra("crop", "true");”,但它无法工作。还有一个问题:这在Android 3.2上可以工作吗?因为我的应用程序应支持3.2+。 - nikmin
我正在尝试这个例子。我尝试使用与输入文件和输出文件相同的路径,但它没有覆盖更改,而是创建了一个新的修改后的文件,文件名类似于IMG_xxx_xxx.jpg,并且删除了输入文件。我只想裁剪图像并将其保存回相同的文件名。 - Adnan
如果你想要所有选项,我认为只需要 Intent intent = new Intent(Intent.ACTION_EDIT) - John61590

0
找到了一个非常好用的库来完成这个任务。该库可以在 这里 找到。

我不明白这如何回答你自己的问题,因为你的问题明确表示你不是在寻找一个简单的下拉菜单,而是要进行图像编辑。 - Alex Reche Martinez
链接已失效。 - Shahab Rauf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接