2016-01-14 2 views
1

Я пробовал несколько способов, но он всегда возвращает «null».BitmapFactory.decodeFile is null

Я хочу прочитать файл из папки камеры в растровый объект.

File camDir = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/DCIM/Camera"); 
    File[] files = camDir.listFiles(); 
    Bitmap img = BitmapFactory.decodeFile(files[1].getAbsolutePath()); 
    img.getDensity(); 

Где моя ошибка?

+0

Возможно, это долго, потому что изображение слишком велико, можете ли вы попытаться поймать и получить исключение? –

+1

Вы предполагаете, что 'files [1]' будет указывать на растровое изображение. Кроме того, это будет работать только в том случае, если у вас есть READ_EXTERNAL_STORAGE, и в зависимости от версии ОС вашего устройства и 'targetSdkVersion' вам может потребоваться запросить это разрешение у пользователя во время выполнения. – CommonsWare

+0

Почему вы не используете это? : 'Файл camDir = новый файл (Environment.getExternalStorageDirectory() +"/DCIM/Camera ");' –

ответ

1

Если вы не знаете, что является null, вы можете добавить простой try()catch(Exception e), а затем e.printstacktrace();, чтобы получить ошибку.

Если ошибка около outOfMemory попробуйте сделать это answer;

Кроме того, вы можете попробовать этот трюк:

File camDir = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/DCIM/Camera"); 
File[] files = camDir.listFiles(); 
FileInputStream FI = new FileInputStream (files[1].getAbsolutePath()); 
Bitmap img = BitmapFactory.decodeStream(FI); 
img.getDensity(); 

Другой попробовать, что я говорил вам о комментариях вы можете удалить getAbsolutePath() и сделать это следующим образом:

File camDir = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera"); 
1

Спасибо всем помощь!!

Я обнаружил, что проблема была "getAbsolutePath()" Я не понимаю, почему, но это работает ..

Я изменил это:

File camDir = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/DCIM/Camera"); 

To:

File camDir = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera"); 

И это работает!

Смежные вопросы