Cómo tintar un mapa de bits a un color sólido
¿Cómo se va a teñir un mapa de bits a un color sólido, reemplazando efectivamente todos los píxeles que tienen un valor alfa> 0 a un valor RGB dado? Además, ¿cómo hacer lo mismo, pero mantener el alpha por cada píxel? No estoy buscando operaciones por pixel ya que tienden a ser lentas.
Intenté usar un ColorMatrixColorFilter y un ColorFilter, que teñen el mapa de bits, pero coloran en vez de realizar un tinte del 100%.
- Android aplicar color a la animación alfa
- TextView y color de fondo
- MediaCodec y Camera: los colores no coinciden
- Cómo obtener el color de fondo de un ImageView
- Color del texto del cambio del androide de artículos en hilandero
- Estados dibujables con colores (no dibujables)
- Cómo obtener el valor RGB de código de color hexadecimal en java
- ANDROID - detección de color usando openCV - cómo?
- ¿Cómo cambia el color del subrayado de Edittext en 4.0+?
- Selector de color de Google Calendar
- ¿Cómo puedo configurar el color estrella de la barra de calificación?
- Diseño de materiales paleta de colores
- Descripción de los colores en Android (seis caracteres)
He resuelto esto mediante un PorterDuffColorFilter
Paint paint = new Paint(); paint.setColorFilter(new PorterDuffColorFilter(targetColor, PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(resource, matrix, paint);
Sólo para dar una respuesta más completa.
Esto tomará un mapa de bits y producirá un nuevo mapa de bits de color:
public static Bitmap tintImage(Bitmap bitmap, int color) { Paint paint = new Paint(); paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)); Bitmap bitmapResult = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(bitmapResult); canvas.drawBitmap(bitmap, 0, 0, paint); return bitmapResult; }
- Personalizar Edittext carácter de entrada a la imagen?
- Qué métodos se invocan en el ciclo de vida de la actividad en los siguientes casos: