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 ?

1voto

sanjay patel Points 11
static ArrayList< Drawable>  d;
d = new ArrayList<Drawable>();
for(int i=0;i<MainActivity.FilePathStrings1.size();i++) {
  myDrawable =  Drawable.createFromPath(MainActivity.FilePathStrings1.get(i));
  d.add(myDrawable);
}

0voto

Suresh Parmar Points 93

Vous ne pouvez pas accéder à vos éléments dessinés via un chemin, donc si vous voulez une interface lisible par l'homme avec vos éléments dessinés, vous pouvez la construire par programme.

déclarez un HashMap quelque part dans votre classe :

private static HashMap<String, Integer> images = null;

//Then initialize it in your constructor:

public myClass() {
  if (images == null) {
    images = new HashMap<String, Integer>();
    images.put("Human1Arm", R.drawable.human_one_arm);
    // for all your images - don't worry, this is really fast and will only happen once
  }
}

Maintenant pour l'accès -

String drawable = "wrench";
// fill in this value however you want, but in the end you want Human1Arm etc
// access is fast and easy:
Bitmap wrench = BitmapFactory.decodeResource(getResources(), images.get(drawable));
canvas.drawColor(Color .BLACK);
Log.d("OLOLOLO",Integer.toString(wrench.getHeight()));
canvas.drawBitmap(wrench, left, top, null);

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