如何将一个位图着色为纯色

如何将一个位图设置为纯色,将所有具有alpha> 0的像素有效地replace为给定的RGB值? 另外如何做同样的事情,但保持每个像素的阿尔法? 我不是在寻找每像素的操作,因为它们往往是缓慢的。

我尝试使用ColorMatrixColorFilter和一个ColorFilter,它们用来着色Bitmap,但是它们着色而不是执行100%的色调

我通过使用PorterDuffColorFilter解决了这个问题

Paint paint = new Paint(); paint.setColorFilter(new PorterDuffColorFilter(targetColor, PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(resource, matrix, paint); 

只是给一个更完整的答案。

这将需要一个位图,并输出一个新的有色位图:

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