gpt4 book ai didi

android - 在 Android 4.4 中从图库中选择时进行裁剪

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:20 24 4
gpt4 key购买 nike

从 Android 4.4 开始,当您启动 Intent.ACTION_GET_CONTENT 类型的 Intent 时,它不会在 Gallery、Dropbox 等之间进行选择,而是会打开新的文档浏览器。如果您只想打开一个图像,这很好,因为这仍然可以用与旧 APIS 相同的方式执行。当您需要裁剪所选图像时,问题就来了,因为文档浏览器忽略了我传递给它的 Uri 和裁剪参数。这就是我正在做的:

void take_photo() {
File file = null;
try {
file = PhotoUtils.createTemporaryFile("picture", ".jpg",
EditProfileActivity.this);
file.delete();

} catch (Exception e) {
e.printStackTrace();
}
photoUri = Uri.fromFile(file);
Intent galleryIntent= new Intent(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
galleryIntent.putExtra("crop", "true");
galleryIntent.putExtra("aspectX", 2);
galleryIntent.putExtra("aspectY", 2);
galleryIntent.putExtra("outputX", 1300);
galleryIntent.putExtra("outputY", 1300);
galleryIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(galleryIntent, ACTIVITY_SELECT_IMAGE);
}

然后我保存了我的 photoUri 以确保我在返回时可以使用它:

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (photoUri != null)
outState.putString("uri", photoUri.toString());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState.containsKey("uri"))
photoUri = Uri.parse(savedInstanceState.getString("uri"));
}

然后在 onActivityResult 中,我只需要打开一个带有 photoUri 的 InputStream,因为 galleryIntent 已经用裁剪后的图像创建了文件。

现在,当我执行此操作时,永远不会创建 Intent 中 photoUri 指定的文件。有没有新的方法可以做到这一点?

最佳答案

您可能想要使用返回的 Intent 的数据 Uri。

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

if (requestCode == ACTIVITY_SELECT_IMAGE) {

if(resultCode == RESULT_OK){
Uri realUri = intent.getData();
}
}
}

现在因为 DocumentsActivity 不知道如何“裁剪”任何东西。您可以将操作更改为:Intent.ACTION_PICK

这将使您绕过 DocumentsActivity 直接转到相册或照片应用程序。

不过,我建议您使用两个 Intent。一个 Intent 选择一张照片,然后一个 Intent 裁剪该照片。这更加可靠,因为某些应用程序(例如照片应用程序)也不知道如何处理额外的“裁剪”。

关于android - 在 Android 4.4 中从图库中选择时进行裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com