Cómo llenar objeto de mapa de bits con el color de Android

Estoy trabajando en Android y hay algún problema aparecen
Quiero llenar de color en el objeto de mapa de bits, pero no se puede
Traté de mapa de bits.setPixel pero mi Imagen es PNG (como un círculo o un desenfoque, rodeado de color transparente) y android no puede getHeight() o getWidth(), es decir,

ImageView i = nuevo ImageView(mContext); 
mapa de bits bMap = BitmapFactory.decodeResource(este.mContext.getResources(), mImageIds[posición]);

 

//for(int i1 = 0; i1 < bMap.getHeight();i1++) //for(int j = 0; j < bMap.getWidth(); j ++) //bMap.setPixel(i1, j, Color.ROJO); //no se puede establecer

i.setImageBitmap(bMap);
i
.setLayoutParams(new Gallery.LayoutParams(150, 100));
i
.setScaleType(ImageView.ScaleType.FIT_XY);
i
.setBackgroundResource(mGalleryItemBackground);
i
.setBackgroundColor(Color.TRANSPARENT);

OriginalEl autor Minh Khac | 2010-07-17

3 respuestas

  1. 44

    Si desea llenar un mapa de bits con un color sólido puede intentar usar

    Bitmap b = /*however you get a bmp*/
    b.eraseColor(color)

    Se borra el mapa de bits mediante la cumplimentación de todos los píxeles con un color.

    Podría ser el efecto que desea

    Pedro

    OriginalEl autor Peter

  2. 3

    Esta pregunta puede ser viejo, pero no es una solución mucho más sencilla para esto.
    En lugar de aplicar un filtro sobre la imagen de mapa de bits, se puede aplicar en el ImageView directamente:

    imageView.setColorFilter(tintColor, PorterDuff.Mode.MULTIPLY);

    Usted puede tratar de colores diferentes modos de filtro (AÑADIR, BORRAR, OSCURECER, MULTIPLICAR, …) dependiendo de sus necesidades y las de mapa de bits proporcionado a su ImageView.

    Si no funciona, pruebe a quitar el modo:

    imageView.setColorFilter(tintColor);

    OriginalEl autor chteuchteu

  3. 1

    Obtener un mutable copia del mapa de bits del copia() método, y modificar los píxeles.

    OriginalEl autor ognian

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *