我正在尝试从SD卡缩放位图并将其写入手机内存。然后在稍后解码它以将其添加到HashMap
。
问题是虽然路径正确且存在缩放图像(我检查过),但我发现文件未找到异常
这是保存部分
Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream, null, options );
File imageRootPath = getFilesDir();
File imageRoot = new File(imageRootPath, imagUri.getLastPathSegment()+".png");
FileOutputStream out = new FileOutputStream(imageRoot);
yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 90, out);
这是我阅读文件时的部分
try {
Uri mainImgeUri = Uri.parse(imageRoot.toString());
File imageFile = new File(mainImgeUri.toString());
if(imageFile.exists()){
System.out.println("it does");
}
InputStream imageStream = ListPropertiesBaseActivity.this.getContentResolver().openInputStream(mainImgeUri); // I am getting file not found error
Bitmap yourSelectedImage =BitmapFactory.decodeStream(imageStream);
hmBitmap.put(ID, yourSelectedImage);
imageStream.close();
} catch (Exception e) {
e.printStackTrace();
}
OpenInputStream
是否无法从内部手机内存中读取?或者可能是保存产生的图像不好?
虽然我可以通过手动浏览到文件并打开它来查看它
请注意,System.out.Println已执行,因此表示该文件存在
答案 0 :(得分:2)
您是否尝试过Logging imageStream以查看uri实际上是什么?
答案 1 :(得分:1)
使用File
uri创建mainImgeUri
对象并检查文件是否存在,将此文件传递给openInputStream()
方法
答案 2 :(得分:1)
我找到了它。好吧,我找到了解决方法,但我无法解释以前的行为以及为什么它不起作用。我用
替换了这个getContentResolverFileInputStream fis = new FileInputStream(imageFile);
Bitmap yourSelectedImage =BitmapFactory.decodeStream(fis);
这很有用。知道为什么!虽然