以下是我的计划和参考图片。
计划:
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来创建“理想结果”?有人能给我一些意见吗?
非常感谢谢谢!
答案 0 :(得分: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,我得到了更接近您要求的东西。
结果: