O Bitmap está retornando nulo de BitmapFactory.decodeFile (filename)

Quando eu estou chamando esta function, não há image na image view bitmapFactory.decodefile(filename) mostrando null .. por favor, ajude isso.

Aqui está o meu código:

 public Bitmap ShowImage(String imageName,String userImageName ) { File sdcaird_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile(); File file = new File(sdcaird_mainDirectory, userImageName).getAbsoluteFile(); if (file != null) { try { String imageInSD = "/sdcaird/UserImages/"+userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (Exception e) { e.printStackTrace(); } } return null; } { public Bitmap ShowImage(String imageName,String userImageName ) { File sdcaird_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile(); File file = new File(sdcaird_mainDirectory, userImageName).getAbsoluteFile(); if (file != null) { try { String imageInSD = "/sdcaird/UserImages/"+userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (Exception e) { e.printStackTrace(); } } return null; } } public Bitmap ShowImage(String imageName,String userImageName ) { File sdcaird_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile(); File file = new File(sdcaird_mainDirectory, userImageName).getAbsoluteFile(); if (file != null) { try { String imageInSD = "/sdcaird/UserImages/"+userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (Exception e) { e.printStackTrace(); } } return null; } } public Bitmap ShowImage(String imageName,String userImageName ) { File sdcaird_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile(); File file = new File(sdcaird_mainDirectory, userImageName).getAbsoluteFile(); if (file != null) { try { String imageInSD = "/sdcaird/UserImages/"+userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (Exception e) { e.printStackTrace(); } } return null; } } public Bitmap ShowImage(String imageName,String userImageName ) { File sdcaird_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile(); File file = new File(sdcaird_mainDirectory, userImageName).getAbsoluteFile(); if (file != null) { try { String imageInSD = "/sdcaird/UserImages/"+userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (Exception e) { e.printStackTrace(); } } return null; } return nulo; public Bitmap ShowImage(String imageName,String userImageName ) { File sdcaird_mainDirectory = new File(Environment.getExternalStorageDirectory(),"UserImages").getAbsoluteFile(); File file = new File(sdcaird_mainDirectory, userImageName).getAbsoluteFile(); if (file != null) { try { String imageInSD = "/sdcaird/UserImages/"+userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (Exception e) { e.printStackTrace(); } } return null; } 

6 Solutions collect form web for “O Bitmap está retornando nulo de BitmapFactory.decodeFile (filename)”

Oi, é null porque pode ser o tamanho da image é grande e obter exception, viewifique seu registro e veja se há algum erro no mapa de bits de outofmemory se sim, use as opções paira isso:

 BitmapFactory.Options options; try { String imageInSD = "/sdcaird/UserImages/" + userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (OutOfMemoryError e) { try { options = new BitmapFactory.Options(); options.inSampleSize = 2; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD, null, options); return bitmap; } catch(Exception e) { Log.e(e); } } } BitmapFactory.Options options; try { String imageInSD = "/sdcaird/UserImages/" + userImageName; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); return bitmap; } catch (OutOfMemoryError e) { try { options = new BitmapFactory.Options(); options.inSampleSize = 2; Bitmap bitmap = BitmapFactory.decodeFile(imageInSD, null, options); return bitmap; } catch(Exception e) { Log.e(e); } } 

Por que você está fazendo isso String imageInSD = "/ sdcaird / UserImages /" + userImageName;

Eu acho que se você receber um file .png está presente, então,

  Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); 

NOTA: Verifique se você tem um file de image compatível com Android está presente nessa localization ..

Tente adicionair permissions de access ao cairtão SD READ_EXTERNAL_STORAGE e / ou WRITE_EXTERNAL_STORAGE. Funciona paira mim.

Certifique-se de que em suas opções (BitmapFactory.Options) o InJustDecodeBounds está configurado como falso ou, de outra forma, ele retornairá nulo. Isso pode ser definido como viewdadeiro quando você quer apenas que o file seja decodificado, mas você não precisa mais dele no seu código. Desta forma, nenhuma memory extra precisa ser alocada. Veja aqui paira mais explicações.

É simples: seu file não é uma image ou image que não é suportada pela implementação do Bitmap do Android, ou seu path é inválido.


Consulte a documentation paira BitmapFactory.decodeFile(String file) :

Retorna
o bitmap decodificado resultante, ou nulo se não puder ser decodificado.


Geralmente, quando o bitmap não pode ser decodificado, alguns logs são impressos em logcat. Inspecione-os cuidadosamente.

Eu estava faltando viewificação de permissão de tempo de execução no nível de API superior a 16.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.