BitmapFactory.decodeFile返回null,即使图像存在

时间:2010-08-02 14:51:07

标签: android bitmap imageview fileoutputstream

保存文件:

FileOutputStream fo = null; 
try { 
        fo = this.openFileOutput("test.png", Context.MODE_WORLD_READABLE); 
} catch (FileNotFoundException e) { 
        e.printStackTrace(); 
} 
bitmap.compress(CompressFormat.PNG, 100, fo)

加载文件:

String fname = this.getFilesDir().getAbsolutePath()+"/test.png"; 
Bitmap bMap = BitmapFactory.decodeFile(fname);
i.setImageBitmap(bMap);

最后一行给出了空指针异常,为什么BitmapFactory.decodeFile返回null?我可以验证文件是否正确保存,因为我可以使用adb将其拉出来并看到png正确显示。

2 个答案:

答案 0 :(得分:20)

如果NullPointerException直接在此行:

  

i.setImageBitmap(BMAP);

然后您的问题是inull。鉴于您正在调用setImageBitmap(),我猜测iImageView - 请确保您的findViewById()来电正常。

此外,您应该使用以下内容获取fname

  

String fname = new File(getFilesDir(),“test.png”)。getAbsolutePath();

答案 1 :(得分:2)

在DecodeFile方法中使用options参数时,请确保 InJustDecodeBounds 属性设置为 false ,否则它将始终返回null。当您只想要解码文件但在应用程序/代码中不需要它时,可以将其设置为true。这样就不需要分配额外的内存。有关示例,请参阅here