【问题标题】:BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)BitmapFactory:无法解码流:java.io.FileNotFoundException:打开失败:ENOENT(没有这样的文件或目录)
【发布时间】:2018-02-02 18:56:02
【问题描述】:

我正在尝试从有关 BitMapFactory.decodeFile 的文件路径中获取图片以在 Canvas 中绘制位图并得到此异常:

 Unable to decode stream: java.io.FileNotFoundException: 
/content:/media/external/images/media/40: open failed: ENOENT (No such file 
or directory)
02-02 10:03:19.793 3371-3371/com.group.digit.razvoj.appointment 
E/AndroidRuntime: FATAL EXCEPTION: main

但是当我使用该文件路径在 Fragment 中设置图像时,它可以正常工作。

这是我的代码:

 String urilogo = helper.getUri();
        File imgFile = new  File(urilogo);
        BitmapFactory.Options bmOptions = new BitmapFactory.Options();
        Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

在它工作的片段中:

String urilogo = helper.getUri();        
    if(urilogo!= null || urilogo!= "") {
        imageView.setImageURI(Uri.parse(urilogo));
    }

【问题讨论】:

  • /content:/media/external/images/media/40 显然不是文件 URi。您无法将其作为文件打开。
  • 它重新调整文件路径。
  • /content:/media/external/images/media/40 不是文件路径
  • 比什么?
  • 它从该 URI 打开一个流。你也可以这样做。

标签: java android bitmap


【解决方案1】:

如果你不介意文件名,可以使用InputStream作为:

InputStream is = getContentResolver().openInputStream(urilogo);
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close(); 

如果上面的代码不起作用并且helper.getUri()file Uri,则使用:

String urilogo = helper.getUri();
File imgFile = new File(new URI(urilogo));
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

【讨论】:

  • 文件 imgFile = new File(URI(urilogo));不工作......我收到错误,URI(urilogo)需要调用方法
  • URI(urilogo)之前添加new并检查
  • java.lang.IllegalArgumentException:URI 中的预期文件方案:java.io.File.checkURI(File.java:223) 处的 content://media/external/images/media/41跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2019-11-11
  • 1970-01-01
相关资源
最近更新 更多