通过保持宽高比来在Android中裁剪图片

时间:2012-05-04 17:27:56

标签: android image crop

我使用此代码启动裁剪活动,然后将裁剪后的图片作为onActivityResult中的数据返回。所以这很好。

    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setType("image/*");

    List<ResolveInfo> list = getPackageManager().queryIntentActivities(
            intent, 0);

    int size = list.size();

    if (size == 0) {
        Toast.makeText(this, "Can not find image crop app",
                Toast.LENGTH_SHORT).show();
        return;
    } else {
        intent.setData(mImageCaptureUri);

        intent.putExtra("outputX", 200);
        intent.putExtra("outputY", 200);
        intent.putExtra("scale", true);
        intent.putExtra("return-data", true);

        Intent i = new Intent(intent);
        ResolveInfo res = list.get(0);

        i.setComponent(new ComponentName(res.activityInfo.packageName,
                res.activityInfo.name));

        startActivityForResult(i, CROP_FROM_CAMERA);

这是用于将图像裁剪为200x200大小的代码,不管我在裁剪活动中选择的宽高比。我担心的是,我想要在活动中选择矩形的长宽比,而不是通过设置数字200和200来固定。

但是当我评论这两行时,我的程序会强行关闭......

是否有任何解决方法可以精确裁剪我在裁剪活动中选择的图片部分,同时保持纵横比与我放在照片上的矩形相比? 我必须把哪些数据作为附加内容?需要帮助!

4 个答案:

答案 0 :(得分:2)

  

How to crop a rectangle from an image in android

     

无法使用裁剪为方形以外的任何其他形状   内置的Android裁剪处理   (com.android.camera.action.CROP)。

在下一个帖子中查看OP的回复 - 你可能有一个解决方案。

这个帖子也有一些很好的建议:

答案 1 :(得分:1)

只需为宽高比0.75

添加以下代码行
intent.putExtra("aspectX", 3);
intent.putExtra("aspectY", 4);

并将比例设置为true

这应该可以解决问题。

答案 2 :(得分:0)

回答可能为时已晚,考虑到其他人可能会在同一个问题上来到这个主题。

cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);

将确保您始终获得一个矩形。

答案 3 :(得分:0)

从图库和裁剪中选择图像,保持纵横比。在这种情况下,比率是BANNER_WIDTH_PX:BANNER_HEIGHT_PX。

configure.ac