BitmapFactory.decodeFile возвращает ноль, даже если изображение существует - PullRequest
10 голосов
/ 02 августа 2010

Сохранение файла:

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 возвращает ноль? Я могу убедиться, что файл сохранен правильно, так же как я могу вытащить его с помощью adb и увидеть, как png отображается правильно.

Ответы [ 2 ]

20 голосов
/ 02 августа 2010

Если NullPointerException находится непосредственно в этой строке:

i.setImageBitmap (ВМАР);

Тогда ваша проблема в том, что i равно null. Учитывая, что вы вызываете setImageBitmap (), я предполагаю, что i является ImageView - убедитесь, что ваш вызов findViewById() работает.

Кроме того, вы должны использовать следующее, чтобы получить fname:

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

2 голосов
/ 14 октября 2016

При использовании параметра options в методе DecodeFile убедитесь, что для свойства InJustDecodeBounds установлено значение false , иначе оно всегда будет возвращать ноль.Это может быть установлено в true, когда вы просто хотите, чтобы файл был декодирован, но вам больше не нужно это в вашем приложении / коде.Таким образом, нет необходимости выделять дополнительную память.См. здесь для примера.

...