Come impostare una bitmap dalla risorsa


280

Sembra semplice, sto cercando di impostare un'immagine bitmap ma dalle risorse, ho all'interno dell'applicazione nella cartella disegnabile.

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

È corretto?

Risposte:


757

Supponendo che tu lo stia chiamando in una classe Activity

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

È richiesto il primo parametro, Risorse. Normalmente è ottenibile in qualsiasi contesto (e sottoclassi come Attività).


1
Sto ottenendo un valore null di bitmap, puoi dirmi perché sto diventando null
gautam

Sì, sto riscontrando lo stesso problema, valore null della bitmap.
Er.Rohit Sharma,

3
Ho avuto il problema. Stavo cercando di convertire il disegno vettoriale in bitmap. Quindi ecco il cod per convertire il disegno vettoriale in bitmap.
Er.Rohit Sharma,

Se non si chiama da una classe Activity (ad es. Se si chiama da una classe di dati) è possibile provare: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy

36

Prova questo

Questo è da sdcard

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

Questo proviene dalle risorse

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

7

Se la risorsa viene visualizzata ed è una vista, è anche possibile acquisirla. Come uno screenshot:

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

Questo in realtà afferra l'intero layout ma puoi modificarlo come desideri.


2

Se è stato dichiarato un oggetto bitmap e si desidera visualizzarlo o archiviare questo oggetto bitmap. ma prima devi assegnare qualsiasi immagine e puoi usare l'evento click pulsante, questo codice dimostrerà solo come memorizzare l'immagine disegnabile in Oggetto bitmap.

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

Ora puoi usare questo oggetto bitmap, sia che tu voglia memorizzarlo, sia usarlo in google maps mentre disegni un'immagine su latitudine e longitudine fisse, o per usare qualcos'altro


0

basta sostituire questa linea

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

con

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

Voglio dire, basta cambiare il valore null con getResources () Se si utilizza questo codice in qualsiasi pulsante o evento Click vista immagine, basta aggiungere getApplicationContext () prima di getResources () ..


0

Utilizzando questa funzione è possibile ottenere l'immagine bitmap. Basta passare l'URL dell'immagine

 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;
      }
 }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.