Cómo configurar un mapa de bits desde un recurso

1 minuto de lectura

avatar de usuario
Principiante

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

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

¿Es esto correcto?

avatar de usuario
X y Y

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

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

El primer parámetro, Recursos, es obligatorio. Normalmente se puede obtener en cualquier Contexto (y subclases como Actividad).

  • Obtengo un valor nulo del mapa de bits, ¿pueden decirme por qué obtengo un valor nulo?

    – gautam

    17 de noviembre de 2017 a las 7:02


  • sí, tengo el mismo problema, valor nulo del mapa de bits.

    – Er.Rohit Sharma

    20 de marzo de 2018 a las 12:00

  • Tengo el problema. Estaba tratando de convertir un vector dibujable en un mapa de bits. Así que aquí está el bacalao para convertir vector dibujable en mapa de bits.

    – Er.Rohit Sharma

    20 de marzo de 2018 a las 12:12


  • Si no llamando 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

    21 de diciembre de 2018 a las 15:06

  • Estaba obteniendo un valor nulo de Bitmap porque estaba usando un recurso vectorial (si usa un .png por ejemplo, funciona)

    – dnhyde

    17 de febrero a las 16:32

avatar de usuario
Parag Chauhan

Prueba esto

esto es de tarjeta sd

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

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 en realidad toma todo el diseño, pero puede modificarlo como desee.

avatar de usuario
Pir Fahim Shah

Si ha declarado un objeto de mapa de bits y desea mostrarlo o almacenar este objeto de mapa de bits. 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 para usarlo en otro lugar

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

avatar de usuario
pavel

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

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad