通过提供图像uri使用图库的直接裁剪功能

时间:2014-08-26 08:03:33

标签: android image gallery crop

这是打开图库并选择图像进行裁剪的代码。我需要的改变是我不想打开画廊来挑选图像。我的imageview中已有图像。如何使用画廊的直接裁剪功能来传递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);

但它也无效。

1 个答案:

答案 0 :(得分: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);