android definición - Cómo configurar un mapa de bits desde el recurso




que usos (6)

solo reemplaza esta linea

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

con

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

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

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

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

¿Es esto correcto?


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

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 el 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 los mapas de Google mientras dibuja una imagen en latitud y longitud fija, o para usar algún otro lugar.


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 puedes modificarlo como desees.


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 requerido. Normalmente se puede obtener en cualquier Contexto (y subclases como Actividad).


Entonces, después de ver (y usar) las otras respuestas, parece que todos manejan mal ColorDrawable y PaintDrawable . (Especialmente en el lollipop) parecía que los Shader estaban ajustados, por lo que los bloques sólidos de colores no se manejaban correctamente.

Estoy usando el siguiente código ahora:

public static Bitmap drawableToBitmap(Drawable drawable) {
    if (drawable instanceof BitmapDrawable) {
        return ((BitmapDrawable) drawable).getBitmap();
    }

    // We ask for the bounds if they have been set as they would be most
    // correct, then we check we are  > 0
    final int width = !drawable.getBounds().isEmpty() ?
            drawable.getBounds().width() : drawable.getIntrinsicWidth();

    final int height = !drawable.getBounds().isEmpty() ?
            drawable.getBounds().height() : drawable.getIntrinsicHeight();

    // Now we check we are > 0
    final Bitmap bitmap = Bitmap.createBitmap(width <= 0 ? 1 : width, height <= 0 ? 1 : height,
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);

    return bitmap;
}

A diferencia de los demás, si llama a setBounds en Drawable antes de pedir que se convierta en un mapa de bits, ¡dibujará el mapa de bits en el tamaño correcto!





android bitmap