BitmapFactory.decodeFile returns null even image exists
Asked Answered
J

2

11

Saving the file:

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

Loading the file:

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

The last line gives a null pointer exception, why is BitmapFactory.decodeFile returning null? I can verify that the file is getting saved correctly as I can pull it using adb and see the png displaying properly.

Juno answered 2/8, 2010 at 14:51 Comment(2)
Have you closed the file output stream? What is "i" set to, and why does it have a single character name?Boehmer
Yes it's closed. i was an image view, which was set to null, because I referenced it incorrectly.Juno
J
20

If the NullPointerException is directly on this line:

i.setImageBitmap(bMap);

Then your problem is that i is null. Given that you're calling setImageBitmap(), I am guessing that i is an ImageView -- make sure your findViewById() call is working.

Also, you should use the following to get fname:

String fname=new File(getFilesDir(), "test.png").getAbsolutePath();

Jamarjamb answered 2/8, 2010 at 15:3 Comment(0)
B
2

When using the options parameter in the DecodeFile method be sure that the InJustDecodeBounds property is set to false or otherwise it will always return null. This can be set to true when you just want the file to be decoded but you don't need it further in your app/code. This way no extra memory needs to be allocated. See here for an example.

Boyceboycey answered 14/10, 2016 at 8:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.