当前位置: 首页 > 知识库问答 >
问题:

从意图图库获取图像

洪安顺
2023-03-14

我想使用共享命令从图库获取图像。

我目前的代码是:

Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        Log.d("Test","Simple SEND");
        Uri imageUri = (Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);
        if (imageUri != null) {
            InputStream iStream = getContentResolver().openInputStream(imageUri);
        }
    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
        Log.d("Test", "Multiple SEND");
    }

imageUri 的值为:content://media/external/images/media/37

但是函数“openInputStream”会抛出错误“java.io.FileNotFoundException”。

通过下面的函数,我得到了图像的真实路径。

public static String getRealPathFromUri(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = { MediaStore.Images.Media.DATA };
        cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

但我不知道如何将其转换为位图。

共有1个答案

赏彭薄
2023-03-14

Uri 不是文件new File(imageUri.toString()) 总是错的。imageUri.getPath() 仅在 Uri 的方案是 file 时才有效,在你的情况下,该方案可能是内容

使用 ContentResolveropenInputStream() 获取由 Uri 标识的文件或内容上的 InputStream。然后,将该流传递到 BitmapFactory.decodeStream()。

另外,请解码后台线程上的位图,以便在这项工作进行时不会冻结UI。

 类似资料:
  • 我想从获取图像:

  • 但是宽度和高度较低的图像成功地加载到图像视图中! 有人能告诉我代码有什么问题吗?我做错了什么?我只想从库中导入相机图像,并在图像视图中显示它们!

  • 我在页面中有一个图像滑块,我想通过单篇文章放置图像,wordpress提供get_post_gallery功能通过单篇文章获取图像,这一阶段已经完成,但问题是它显示缩略图图像,我想在滑块上显示完整图像,就像我们在特色图像场景中所做的那样$img=wp\u get\u attachment\u image\u src(get\u post\u缩略图\u id($post- 我想根据我在functio

  • 问题内容: Q1) 在我的reactjs应用程序中,我正在尝试从后端Nodejs服务器获取API。API会根据请求响应图像文件。 我可以在http://192.168.22.124:3000/source/592018124023PM-pexels- photo.jpg 上访问并查看图像文件 但是在我的reactjs客户端上,我在控制台日志上收到此错误。 未捕获(承诺)SyntaxError:意外

  • 我想从接收正常文件路径,如下所示: 这个文件也存在,但我不能得到它。我在这里看到了一些建议获得路径的问题,如下所示: 但此方法返回以下异常: 因此,我在这里收到的: 如何将文件转换为字符串:

  • 我知道,要放入值,我可以,要检索值,我可以,但在下面的代码中,它的行为不像预期的那样。检索值时,我获得。 设置值的代码: 并且我正在检索BroadCaseReceiver的onReceive中的值:[省略的无关代码]