通过提供图像 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】:

您必须将outputoutputFormat 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裁剪图像

如何从图库和相机中裁剪图像

如何在 Android 7.0 中从相机或图库中选择要裁剪的图像?

在 Android 的默认图库图像查看器中使用 URI 打开图像

如何从图库(Android Studio)中选择并保存图像?

如何在 appcelerator 中裁剪图库图像?