0

我对来自 android 库的裁剪/缩放图像有疑问。我将 outputX 和 outputY 设置为 480,但是当我将输出大小设置为大于 160 时,android 裁剪活动返回大小总是 160 x 160。

我从画廊发送图像,分辨率为 2048 x 1536。我使用三星的 10.1" 平板电脑

有人可以帮忙吗?谢谢你

Uri fileUri = data.getData();

Log.e("", fileUri.getPath());
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;
}

intent.setData(fileUri);

intent.putExtra("outputX", 480);
intent.putExtra("outputY", 480);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);

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, 2);
4

2 回答 2

0

有点晚回答这个问题,希望它可以帮助某人......

基本上,通过将“返回数据”设置为 true,作物可以传回的数据量是有限的。

解决方案是将“return-data”设置为false并添加:

intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));

tempFile 是在外部存储上创建的文件(请记住在清单中添加适当的权限),我还没有设法使其与内部存储上的文件一起使用。

当 Activity 在 onActivityResult 中返回时,它将使用裁剪的图像数据填充您的 tempFile。之后,做你的事情并在完成后删除临时文件......

于 2014-10-21T09:43:22.560 回答
-1

have u tried to set density of returned data??

when u get the resulted image from this code:

 Bundle extras = data.getExtras();
            if (extras != null) {
      //bitmap photo        
                photo = extras.getParcelable("data");

set the density of bitmap at 100.

photo.setDensity(100);

You will definately get big image as u want... if u want to get small then above than set it to 150 or 200... as big value u'll give u'll find small answer.

于 2013-07-03T14:03:52.670 回答