Как подкрасить растровое изображение в сплошной цвет - PullRequest
18 голосов
/ 13 июня 2011

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

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

Ответы [ 3 ]

37 голосов
/ 14 июня 2011

Я решил это с помощью PorterDuffColorFilter

Paint paint = new Paint();
paint.setColorFilter(new PorterDuffColorFilter(targetColor, PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(resource, matrix, paint);
23 голосов
/ 07 июля 2016

Просто чтобы дать более полный ответ.

Это займет растровое изображение и выведет новое тонированное растровое изображение:

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;
}
1 голос
/ 25 мая 2018

Если ваше растровое изображение является рисованным, которое вы хотите использовать в макете, то вы можете создать новый чертеж (.xml), который ссылается на ваш оригинальный чертеж (например, .png).

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/plus"
     android:tint="#2c53e5" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...