Créez un bitmap / Dessinable à partir du chemin du fichier

J'essaie de créer un bitmap ou Drawable à partir du 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 une image du chemin d'accès. J'ai imprimé le chemin avec mText et il ressemble à: /storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg

  • Android - Activity Constructor vs onCreate
  • Comment puis-je activer javadoc pour la bibliothèque de support Android?
  • Appareil photo Android - l'application a dépassé la surface NULL
  • CollapsingToolbarLayout titre comme transition d'élément partagé
  • Comment mettre RelativeLayout à l'intérieur de CoordinatorLayout
  • Comment pouvez-vous savoir si une vue est visible à l'écran dans Android?
  • Qu'est-ce que je fais mal? Est-ce que quelqu'un peut m'aider?

  • JSONObject to String Android
  • Impossible de résoudre le symbole MavenDeployment sur gradle
  • La hiérarchie de l'activité de type est incompatible lors de l'extension ActionBarActivity
  • L'application Android prend beaucoup de mémoire
  • La fonction de remplacement de la chaîne ne fonctionne pas dans Android
  • Où est la liste d'alias de type Token d'autorisation Android pour les API Google?
  • 6 Solutions collect form web for “Créez un bitmap / Dessinable à partir du chemin du fichier”

    Créer un bitmap à partir du chemin du 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 Bitmap.createScaledBitmap le bitmap à la hauteur et à la largeur du parent, utilisez la fonction Bitmap.createScaledBitmap .

    Je pense que vous donnez le mauvais chemin du fichier. 🙂 J'espère que cela t'aides.

    Ç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); } 

    Modifier:

    Si au-dessus du répertoire de carte SD codé dur ne fonctionne pas dans votre cas, vous pouvez accéder au chemin de sdcard:

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

    Voici une solution:

     Bitmap bitmap = BitmapFactory.decodeFile(filePath); 

    Eh bien, l'utilisation de la static Drawable.createFromPath(String pathName) me semble un peu plus simple que de le décoder vous-même … 🙂

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

     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); } 

    Vous ne pouvez pas accéder à vos drawables via un chemin, donc, si vous voulez une interface lisible par l'homme avec vos drawables que vous pouvez créer par programmation.

    Déclarer 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); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.