Почему BitmapFactory.decodeFile возвращает значение null?

Мой код:

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
Bitmap rotateBmp = BitmapFactory.decodeFile("/storage/sdcard0/FastBurstCamera/2014-09-15 05-24-07-461.jpg", opt);

Файл /storage/sdcard0/FastBurstCamera/2014-09-15 05-24-07-461.jpg существует, но rotateBmp равен нулю, почему?


person Victor S    schedule 23.09.2014    source источник


Ответы (2)


Файл /storage/sdcard0/FastBurstCamera/2014-09-15 05-24-07-461.jpg существует, но rotateBmp равен нулю, почему?

Потому что это то, о чем вы просили.

Цитирование документация для decodeFile() (выделено мной):

Декодированное растровое изображение или null, если данные изображения не могут быть декодированы, или, если opts не равно null, если opts запрашивает только возврат размера (в opts.outWidth и opts.outHeight)

Цитируя документацию для inJustDecodeBounds:

Если установлено значение true, декодер вернет null (без растрового изображения), но поля out... будут по-прежнему установлены, позволяя вызывающей стороне запрашивать растровое изображение без необходимости выделения памяти для его пикселей.

person CommonsWare    schedule 23.09.2014
comment
Спасибо за ваш любезный ответ, по вашему предложению я удалил opt.inJustDecodeBounds = true;, тогда это работает. Еще раз спасибо! - person Victor S; 23.09.2014

  • Причиной может быть размер изображения большой. Проверьте этот вопрос.
  • Другая причина может заключаться в том, что вы не добавили разрешения READ_EXTERNAL_STORAGE и/или WRITE_EXTERNAL_STORAGE в файл манифеста. Вы добавили?
person Batuhan Coşkun    schedule 23.09.2014