0

以下是我的程序和参考图片。

程序 :

int width = src.getWidth();
int height = src.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas (bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setDither(true);
canvas.drawBitmap(src, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); 
paint.setColor(Color.RED);
paint.setAlpha(35);
canvas.drawRect(0, 0, width, height, paint);

参考图片:

在此处输入图像描述

我使用上面的程序为照片添加了一种透明的红色(带 alpha)。但我不清楚为什么照片变成了深红色。“理想结果”是由 Photoshop 制作的。我只是在原始照片之前添加了一个红色图层。而不是更改为低透明度和 MULTIPLY。

它们是不是相同的处理概念或我的程序有什么问题?它不能使用 Mode.MULTIPLY 来创建“理想结果”吗?有人可以给我一些意见吗?

谢谢谢谢非常感谢!

4

1 回答 1

2
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas mCanvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.LIGHTEN));
paint.setColor(Color.RED);
paint.setAlpha(95);
mCanvas.drawBitmap(src, 0, 0, null);
mCanvas.drawRect(0, 0, src.getWidth(), src.getHeight(), paint);

使用模式Lighten和 Alpha 为 95,我得到的东西更接近您的要求。

结果:

在此处输入图像描述

于 2012-11-08T08:57:15.587 回答