前段时间我设法使以下代码工作(感谢互联网上像你这样的人,绝对不是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)