Wil*_*Kru 18 android tint colors
如何将Bitmap着色为纯色,有效地将alpha> 0的所有像素替换为给定的RGB值?另外如何做同样的事情,但保持每个像素的alpha?我不是在寻找每像素操作,因为它们往往很慢.
我尝试使用ColorMatrixColorFilter和ColorFilter,它们对Bitmap进行着色,但它们着色而不是执行100%色调.
Wil*_*Kru 37
我通过使用PorterDuffColorFilter解决了这个问题
Paint paint = new Paint();
paint.setColorFilter(new PorterDuffColorFilter(targetColor, PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(resource, matrix, paint);
Run Code Online (Sandbox Code Playgroud)
joa*_*gcd 23
只是为了给出更完整的答案.
这将采用位图并输出新的着色位图:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15551 次 |
| 最近记录: |