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?

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).


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

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.


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


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 () ..


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;
      }
 }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.