У меня есть следующий образ:фильтр растрового изображения в разные цвета с помощью PorterDuffColorFilter
Теперь я хотел бы, чтобы фильтровать изображения на различные цвета во время выполнения. Например. Я хочу, чтобы иметь возможность генерировать зеленый вариант, где нижняя часть имеет более темный зеленый цвет, а верхняя левая часть светлее зеленая.
Как это сделать? Возможно ли это?
Я попытался фильтрации растрового изображения, как выглядит следующим образом:
private static Bitmap applyColorFilter(Bitmap source, int color) {
Bitmap empty = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight());
Canvas c = new Canvas(empty);
Paint p = new Paint();
PorterDuffColorFilter pdcf = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN);
p.setColorFilter(pcdf);
c.drawBitmap(empty, 0, 0, p);
source.recycle();
return empty;
}
Я попытался все из PorterDuff.Mode
с, но ни один из них на самом деле не работает. Иногда (например, SRC_IN) я вижу круг, полностью заполненный новым цветом, без затенения. В других случаях я вижу квадрат.
Я думал о создании исходного изображения без самого цвета и для визуализации его затенения альфа-каналом. Однако я не уверен, что это сработает. Я хочу, чтобы получившееся изображение было полностью непрозрачным (кроме внешней тени, которую вы видите выше).