92 votes

Créer un Bitmap/Drawable à partir d'un chemin de fichier

J'essaie de créer un Bitmap ou un Drawable à partir d'un chemin de fichier existant.

String path = intent.getStringExtra("FilePath");
BitmapFactory.Options option = new BitmapFactory.Options();
option.inPreferredConfig = Bitmap.Config.ARGB_8888;

mImg.setImageBitmap(BitmapFactory.decodeFile(path));
// mImg.setImageBitmap(BitmapFactory.decodeFile(path, option));
// mImg.setImageDrawable(Drawable.createFromPath(path));
mImg.setVisibility(View.VISIBLE);
mText.setText(path);

Mais setImageBitmap() , setImageDrawable() ne montre pas d'image à partir du chemin. J'ai imprimé le chemin avec mText et cela ressemble à : /storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg

Qu'est-ce que je fais mal ? Quelqu'un peut m'aider ?

157voto

CodeShadow Points 11

Créer un bitmap à partir du chemin d'accès au fichier :

File sd = Environment.getExternalStorageDirectory();
File image = new File(sd+filePath, imageName);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(),bmOptions);
bitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true);
imageView.setImageBitmap(bitmap);

Si vous souhaitez mettre l'image à l'échelle de la hauteur et de la largeur du parent, utilisez la fonction Bitmap.createScaledBitmap fonction.

Je pense que vous donnez le mauvais chemin de fichier :) J'espère que cela vous aidera.

65voto

Kaidul Islam Points 1987

Ça marche pour moi :

File imgFile = new  File("/sdcard/Images/test_image.jpg");
if(imgFile.exists()){
    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    //Drawable d = new BitmapDrawable(getResources(), myBitmap);
    ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
    myImage.setImageBitmap(myBitmap);

}

Edit :

Si le répertoire sdcard codé en dur ci-dessus ne fonctionne pas dans votre cas, vous pouvez récupérer le chemin sdcard :

String sdcardPath = Environment.getExternalStorageDirectory().toString();
File imgFile = new  File(sdcardPath);

46voto

techtinkerer Points 670

Voici une solution :

Bitmap bitmap = BitmapFactory.decodeFile(filePath);

3voto

Gábor Points 424

Eh bien, en utilisant la statique Drawable.createFromPath(String pathName) me semble un peu plus simple que de le décoder soi-même... :-)

Si votre mImg est un simple ImageView vous n'en avez même pas besoin, utilisez la fonction mImg.setImageUri(Uri uri) directement.

2voto

Aarush Kumar Points 11

Pour Drawable -

Drawable drawable = Drawable.createFromPath(your path in string);

Pour Bitmap -

Bitmap bitmap = BitmapFactory.decodeFile(your path in string);

C'était très simple, j'espère que vous aimez

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X