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.