您的位置:首页 >8.3.10 Paint API之—— ColorFilter(颜色过滤器)(2-3)
发布于2026-08-12 阅读(0)
扫一扫,手机访问
上一节已经聊过 Android 里 Paint API 的 ColorFilter(颜色过滤器)第一个子类:ColorMatrixColorFilter(颜色矩阵颜色过滤器)。这一类东西看着偏底层,真用起来却很能打开 Android 图像处理的思路。顺着这个脉络,这一节继续往下看它的第二个子类:LightingColorFilter(光照色彩颜色过滤器)。先把官方 API 文档摆出来:LightingColorFilter。文档本身内容并不算多,真正需要抓住的重点,其实就在这里:
说白了,这个颜色过滤器做的事并不复杂:它可以拿来模拟一些基础的灯光效果。它的构造参数有两个,一个负责对原图的RPG值做乘法处理,另一个则是在前面结果的基础上再叠加一个值。核心计算逻辑其实就是:(RGB值 * mul + Add) % 255,这样就能得到新的RPG值。这里的%表示求余,另外还有一点别忽略——整个计算过程中,Alpha 是不会发生变化的。接下来不妨写个示例,实际验证一下。
运行效果图:

实现代码:
先是一个简单的布局:activity_main.xml:
接着是我们的MainActiivty.ja va,同样很简单:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private ImageView img_meizi;
private EditText edit_mul;
private EditText edit_add;
private Button btn_change;
private Bitmap mBitmap;
@Override
protected void onCreate(Bundle sa vedInstanceState) {
super.onCreate(sa vedInstanceState);
setContentView(R.layout.activity_main);
mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.img_meizi);
bindViews();
}
private void bindViews() {
img_meizi = (ImageView) findViewById(R.id.img_meizi);
edit_mul = (EditText) findViewById(R.id.edit_mul);
edit_add = (EditText) findViewById(R.id.edit_add);
btn_change = (Button) findViewById(R.id.btn_change);
btn_change.setOnClickListener(this);
}
private Bitmap ProcessImage(Bitmap bp,int mul,int add){
Bitmap bitmap = Bitmap.createBitmap(bp.getWidth(),bp.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColorFilter(new LightingColorFilter(mul,add));
canvas.drawBitmap(bp,0,0,paint);
return bitmap;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_change:
int mul = Integer.parseInt(edit_mul.getText().toString());
int add = Integer.parseInt(edit_add.getText().toString());
img_meizi.setImageBitmap(ProcessImage(mBitmap,mul,add));
break;
}
}
}
好了,LightingColorFilter的使用演示完毕~
LightingColorFilterDemo.zip
嗯,本节演示了一下LightingColorFilter的一个基本用法,用来模拟简单的灯光效果, 实现简单的图片处理效果,好的,本节就到这里,谢谢~
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9