Cómo establecer un mapa de bits desde un recurso

280

Esto parece simple, estoy tratando de establecer una imagen de mapa de bits pero desde los recursos, tengo dentro de la aplicación en la carpeta dibujable.

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

¿Es esto correcto?

Principiante
fuente

Respuestas:

757

Suponiendo que está llamando a esto en una clase de actividad

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

Se requiere el primer parámetro, Recursos. Normalmente se puede obtener en cualquier contexto (y subclases como Actividad).

X y Y
fuente
1
Estoy recibiendo valor nulo de mapa de bits, me puedes decir por qué estoy recibiendo nula
Gautam
Sí, estoy teniendo el mismo problema, valor nulo del mapa de bits.
Er.Rohit Sharma
3
Tengo el problema Estaba tratando de convertir vectores dibujables en mapa de bits. Así que aquí está el bacalao para convertir el vector dibujable en mapa de bits.
Er.Rohit Sharma
Si no llama desde una clase de actividad (por ejemplo, si se llama desde una clase de datos), puede intentar: val myBitmap = BitmapFactory.decodeResource (Resources.getSystem (), R.drawable.your_image) <—Kotlin
Bikeboy
36

Prueba esto

Esto es de sdcard

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

Esto es de recursos

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

Si el recurso se muestra y es una vista, también puede capturarlo. Como una captura de pantalla:

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

Esto realmente toma todo el diseño, pero puede modificarlo como lo desee.

Trgraglia
fuente
2

Si ha declarado un objeto de mapa de bits y desea mostrarlo o almacenarlo. pero primero debe asignar cualquier imagen, y puede usar el evento de clic de botón, este código solo demostrará cómo almacenar la imagen dibujable en un objeto de mapa de bits.

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

Ahora puede usar este objeto de mapa de bits, ya sea que desee almacenarlo, o usarlo en Google Maps mientras dibuja una imagen en latitud y longitud fijas, o usar en otro lugar

Pir Fahim Shah
fuente
0

solo reemplaza esta línea

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

con

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

Quiero decir que simplemente cambie el valor nulo con getResources () Si usa este código en cualquier botón o evento de clic de vista de imagen, simplemente agregue getApplicationContext () antes de getResources () ..

Ravi Makvana
fuente
0

Con esta función, puede obtener un mapa de bits de imagen. Solo pasa la url de la imagen

 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
fuente