Как отточить растровое изображение до сплошного цвета

Как можно было бы покрасить битмап в сплошной цвет, эффективно заменив все пиксели с альфа> 0 на заданное значение RGB? Кроме того, как сделать то же самое, но сохранить альфа для каждого пикселя? Я не ищу работу с пикселями, поскольку они, как правило, медленные.

Я пробовал использовать ColorMatrixColorFilter и ColorFilter, которые подчеркивают битмап, но они раскрашивают вместо 100% оттенка.

Solutions Collecting From Web of "Как отточить растровое изображение до сплошного цвета"

Я решил это, используя 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; }