1

前段时间我设法使以下代码工作(感谢互联网上像你这样的人,绝对不是android文档......)。它基本上做的是启动文件选择活动(在本例中为图像),然后直接跳转到图像裁剪活动,然后将裁剪的图像保存到提供的文件流中。

    File file = new File(saveTo);
    FileOutputStream fs = new FileOutputStream(file);
    fs.close();

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
    intent.setType("image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("outputX", maxImageSize);
    intent.putExtra("outputY", maxImageSize);
    intent.putExtra("scale", "true");
    //intent.putExtra("return-data", false);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
    intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    intent.putExtra("noFaceDetection", !false);
    intent.putExtra("setWallpaper", false);
    startActivityForResult(intent, CROP_FROM_CAMERA);

首先,我想明确表示这可以完美运行,并且我对这段代码没有任何问题。

上面的代码在其意图中没有返回任何数据。这是因为“return-data”额外被有意注释掉,因此裁剪后的图像直接保存到开放流中,而不是占用设备内存,并防止大图像出现丑陋行为。

我想知道的是: 如何获取选择然后裁剪的原始文件(而不是创建的文件\缩略图)的 URI?有没有办法做到这一点,而不需要拆开工作代码并尝试分几个步骤来做到这一点?(就像首先选择图像然后运行裁剪活动,在两者之间存储原始文件 URI)

4

1 回答 1

1

经过一些研究,我发现依赖此意图是不好的做法,因为它可能会在未来版本的 Android 操作系统中被删除或更改。猜猜这就是为什么一开始就很难找到任何关于它的真实信息的原因。无论如何,我最终使用了自定义裁剪库,而不是依赖于内部的 android 意图。

于 2013-06-27T19:45:38.067 回答