通过提供图像 uri 使用图库的直接裁剪功能
Posted
技术标签:
【中文标题】通过提供图像 uri 使用图库的直接裁剪功能【英文标题】:use direct crop feature of gallery to by providing image uri 【发布时间】:2014-08-26 08:03:32 【问题描述】:这是打开画廊并选择图像进行裁剪的代码。我需要的改变是我不想打开画廊来挑选图像。我的图像视图中已经有图像。如何传递图像的 uri 以使用画廊的直接裁剪功能。我需要在下面的代码中进行哪些修改。谢谢!
Intent intent = new Intent();
// call android default gallery
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// ******** code for crop image
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);
我已经修改了
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(edtImgUri);
但它也不起作用。
【问题讨论】:
commonsware.com/blog/2013/01/23/… 检查这个请github.com/biokys/cropimage 【参考方案1】:您必须将output
和outputFormat
Extra 添加到意图中。输出应谨慎选择,以便系统(图库)可以写入,您的应用可以读取。
这对我有用:
final Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// We should always get back an image that is no larger than these
// dimensions
intent.putExtra("outputX", 128);
intent.putExtra("outputY", 128);
// Scale the image down to 128 x 128
intent.putExtra("scale", true);
intent.putExtra("windowTitle",
profileActivity.getString(R.string.pick_picture));
File tempFile = new File(Environment.getExternalStorageDirectory(),
"/crop_avatar.png");
mSavedUri = Uri.fromFile(tempFile);
intent.putExtra("output", mSavedUri);
intent.putExtra("outputFormat", "PNG");
profileActivity.startActivityForResult(intent, INTENT_PICK_PICTURE);
【讨论】:
以上是关于通过提供图像 uri 使用图库的直接裁剪功能的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 7.0 中从相机或图库中选择要裁剪的图像?
在 Android 的默认图库图像查看器中使用 URI 打开图像