我有以下图像:
现在我想在运行时将此图像过滤为不同的颜色。例如,我希望能够生成它的绿色版本,其中下部是深绿色,左上角是浅绿色。
我怎样才能做到这一点?这甚至可能吗?
我尝试过如下过滤位图:
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
s,但没有一个真正有效。有时(例如 SRC_IN)我看到圆圈完全被新颜色填充,没有任何阴影。在其他情况下,我看到一个正方形。
我考虑过生成一个本身没有颜色的源图像,并使用 alpha 通道渲染它的阴影。但是,我不确定这是否可行。我希望生成的图像完全不透明(除了您可以在上面看到的外部阴影)。