Comment définir un bitmap à partir d'une ressource

280

Cela semble simple, j'essaie de définir une image bitmap mais à partir des ressources, je l'ai dans l'application dans le dossier dessinable.

bm = BitmapFactory.decodeResource(null, R.id.image);

Est-ce correct?

Débutant
la source

Réponses:

757

En supposant que vous l'appeliez dans une classe d'activité

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);

Le premier paramètre, Resources, est requis. Il est normalement disponible dans n'importe quel contexte (et sous-classes comme Activity).

xandy
la source
1
Je reçois une valeur nulle de bitmap, pouvez-vous me dire pourquoi je reçois null
gautam
oui, je reçois le même problème, la valeur nulle du bitmap.
Er.Rohit Sharma
3
J'ai eu le problème. J'essayais de convertir un vecteur dessinable en bitmap. Voici donc la morue pour convertir le vecteur dessinable en bitmap.
Er.Rohit Sharma
Si vous n'appelez pas à partir d'une classe Activity (par exemple, s'il est appelé à partir d'une classe de données), vous pouvez essayer: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy
36

Essaye ça

C'est de sdcard

ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/test2.png");
image.setImageBitmap(bMap);

Cela provient des ressources

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
Parag Chauhan
la source
7

Si la ressource s'affiche et est une vue, vous pouvez également la capturer. Comme une capture d'écran:

View rootView = ((View) findViewById(R.id.yourView)).getRootView();
rootView.setDrawingCacheEnabled(true);
rootView.layout(0, 0, rootView.getWidth(), rootView.getHeight());
rootView.buildDrawingCache();

Bitmap bm = Bitmap.createBitmap(rootView.getDrawingCache());

rootView.setDrawingCacheEnabled(false);

Cela saisit en fait toute la mise en page, mais vous pouvez modifier comme vous le souhaitez.

trgraglia
la source
2

Si vous avez déclaré un objet bitmap et que vous souhaitez l'afficher ou stocker cet objet bitmap. mais vous devez d'abord attribuer une image, et vous pouvez utiliser l'événement de clic de bouton, ce code ne montrera que comment stocker l'image dessinable dans l'objet bitmap.

Bitmap contact_pic = BitmapFactory.decodeResource(
                           v.getContext().getResources(),
                           R.drawable.android_logo
                     );

Vous pouvez maintenant utiliser cet objet bitmap, que vous souhaitiez le stocker ou l'utiliser dans google maps tout en dessinant une image à une latitude et une longitude fixes, ou pour en utiliser ailleurs

Pir Fahim Shah
la source
0

il suffit de remplacer cette ligne

bm = BitmapFactory.decodeResource(null, R.id.image);

avec

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.YourImageName);

Je veux dire juste changer la valeur nulle avec getResources () Si vous utilisez ce code dans n'importe quel bouton ou événement de clic de vue d'image, ajoutez simplement getApplicationContext () avant getResources () ..

Ravi Makvana
la source
0

En utilisant cette fonction, vous pouvez obtenir une image bitmap. Passez simplement l'URL de l'image

 public Bitmap getBitmapFromURL(String strURL) {
      try {
        URL url = new URL(strURL);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
      } catch (IOException e) {
        e.printStackTrace();
        return null;
      }
 }
pavel
la source