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

获取已保存图像文件的Uri

东郭和光
2023-03-14

当我从图库中选择一个图像时,我可以获得该图像的Uri,如下所示:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent result) {
    if (requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK) {
        Uri uri = result.getData();
        beginCrop(uri);
    } else if (requestCode == Crop.REQUEST_CROP) {
        handleCrop(resultCode, result);
    }
}

上面检索到的Uri的格式是content://media/external/images/media/7266

但是,当我试图获取刚保存为文件的图像的Uri时,无法以这种格式检索Uri:

Date d = new Date();
            CharSequence s  = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
            Bitmap bitmap = drawView.getResultBitmap();
            File sdCardDirectory = Environment.getExternalStorageDirectory();
            File image = new File(sdCardDirectory, "DCIM/Camera/" + s.toString() + ".png");
            boolean success = false;

            // Encode the file as a PNG image.
            FileOutputStream outStream;
            try {

                outStream = new FileOutputStream(image);
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
                    /* 100 to keep full quality of the image */

                outStream.flush();
                outStream.close();
                success = true;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            if (success) {
                MediaScannerConnection.scanFile(getActivity(), new String[]{
                                image.getAbsolutePath()},
                        null, new MediaScannerConnection.OnScanCompletedListener() {
                            public void onScanCompleted(String path, Uri uri) {


                            }
                        });

                Uri uri = Uri.parse(image.getAbsolutePath());
                beginCrop(uri);

从上面的代码获得的Uri是/storage/emulated/0/dcim/camera/02-04-16 12-49-16.png

我相信,这不是正确的Uri格式,而是绝对文件路径。有没有办法让我获得格式为content://media/external/images/media/的Uri?

非常感谢任何帮助

共有1个答案

昌乐
2023-03-14

我相信,这不是正确的Uri格式,而是绝对文件路径。

你是对的。使用uri.fromfile()文件转换为指向该文件的URI

有没有办法让我获得格式为content://media/external/images/media/的Uri?

不容易。充其量,在onScanCompleted()中,您可能能够运行一些查询来获取mediaStore使用的URI。但是,在此之前,mediastore不知道该文件。

uri.fromfile()获取的URI是有效的URI,但它将具有file方案,而不是content方案。

 类似资料:
  • 我为用户设置了一个首选项,以选择保存文件夹为我的应用程序使用存储访问框架。获得uri后,我将其作为字符串保存到中,并在要保存时保存图像。 我获得在线 这就是我如何调用这个方法,currentFolder是我使用intent和第一个方法得到的相同文件夹。 我如何解决这个问题,哪种方法更可取,为什么?

  • 问题内容: 当我在eclipse中导出可执行jar文件时,也需要使用res文件夹进行编译,当我使用不起作用的方法时。 当前读取的图像代码 代码无效 问题答案: 我现在已经解决了问题-这是有效的代码 fileName的值只是一个图像名称,例如BufferedImage img = loadImage(“ background.png”); 感谢大家的帮助。

  • 问题内容: 我正在尝试通过Django Shell保存图像文件。 我的是: 一切都可以用admin和form进行,但是我想使用shell保存图像: 就像是 问题答案: 您最终将图像复制到中指定的目录中。 在这种情况下,该方法还将保存实例。可以在以下位置找到用于保存的文档:https://docs.djangoproject.com/en/dev/ref/files/file/

  • 问题内容: 我有一个镶嵌应用程序,可以拍摄多张尺寸的照片并将它们分成较小的照片。根据照片的大小,较小照片的数量可能会有所不同。现在,我有一个名称,其中包含从较大图像中获取的所有较小图像。在此示例中,我展示了一个示例,该示例从图像资产列表中调用了图像,以使回答此问题更加容易。 这是(包含所有较小的图像) 我想要做的是有一个继续按钮,该按钮将所有这些图像按顺序保存为piffles或其他任何格式来解析,

  • 保存图像 能将图像保存至Memory Stick™或主机内存。 1. 让指针对准想要保存的图像,从选单列中选择[档案] > [保存图像]。 2. 选择[保存]。 提示 若想变更文件名或保存位置,请选择各项输入栏,并执行决定。

  • 当我在eclipse中导出可执行jar文件时,我需要获取res文件夹进行编译,当我使用方法时,它不起作用。 当前读取图像代码 不起作用的代码