Intereting Posts
Я продолжаю получать ошибку «Никакой активности не найдено для обработки намерения» Уведомлять после завершения воспроизведения звука Сохранение подсветки выделенного элемента в фрагменте? Android-R нельзя разрешить переменной Получить список запусков зависимостей Android: доступ к string.xml с использованием имени переменной Переместить приложение на телефон Что называется «переход» в документации на Android? Что я должен передать для root при раздувании макета для использования в ActionView MenuItem? Ящик навигации и просмотр пейджера в той же активности Android, как проверить, работает ли служба намерений или перестала работать Нарисуйте панель навигации (и другие приложения) в версии Android> = 5 Есть ли способ переопределить эффект свечения прокрутки в списке на Gingerbread IllegalStateException в MediaCodec.dequeInputBuffer / dequeOutputBuffer Как указать пальцем на объектив камеры или нет в андроиде?

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

Как можно было бы покрасить битмап в сплошной цвет, эффективно заменив все пиксели с альфа> 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; }