Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法
作者:CharlinGod 时间:2023-04-28 20:42:22
本文实例讲述了Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法。分享给大家供大家参考,具体如下:
一、如图
二、代码实现
public class ColorImageActivity extends Activity {
private ImageView mImageView;
private SeekBar mSBRed,mSBGreen,mSBBlue,mSBAlpha,mSBLight;
//修改后的图片
private Bitmap mModBitmap;
//画布
private Canvas mCanvas;
//画笔
private Paint mPaint;
//颜色矩阵
private ColorMatrix mColorMatrix;
//图片矩阵
private Matrix mMatrix;
//原图
private Bitmap mBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_color);
initViews();
}
private void initViews() {
mImageView = (ImageView) findViewById(R.id.imageView1);
mSBRed = (SeekBar) findViewById(R.id.seekBar1);
mSBGreen = (SeekBar) findViewById(R.id.seekBar2);
mSBBlue = (SeekBar) findViewById(R.id.seekBar3);
mSBAlpha = (SeekBar) findViewById(R.id.seekBar4);
mSBLight = (SeekBar) findViewById(R.id.seekBar5);
mSBRed.setOnSeekBarChangeListener(new RedChangeListener());
mSBGreen.setOnSeekBarChangeListener(new GreenChangeListener());
mSBBlue.setOnSeekBarChangeListener(new BlueChangeListener());
mSBAlpha.setOnSeekBarChangeListener(new AlphaChangeListener());
mSBLight.setOnSeekBarChangeListener(new LightChangeListener());
//创建原图
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.mm0);
//创建修改的图
mModBitmap = Bitmap.createBitmap(mBitmap.getWidth()+20, mBitmap.getHeight()+20, mBitmap.getConfig());
mCanvas = new Canvas(mModBitmap);
mPaint = new Paint();
mPaint.setColor(Color.BLACK);
mPaint.setAntiAlias(true);
mMatrix = new Matrix();
mColorMatrix = new ColorMatrix();
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
//绘制原图
mCanvas.drawBitmap(mBitmap, mMatrix, mPaint);
mImageView.setImageBitmap(mModBitmap);
}
private class RedChangeListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progess = seekBar.getProgress();
mColorMatrix.set(new float[]{
progess /128.0f,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap, mMatrix, mPaint);
mImageView.setImageBitmap(mBitmap);
}
}
private class GreenChangeListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progess = seekBar.getProgress();
mColorMatrix.set(new float[]{
1,0,0,0,0,
0,progess/128.0f,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap, mMatrix, mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
private class BlueChangeListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progess = seekBar.getProgress();
mColorMatrix.set(new float[]{
1,0,0,0,0,
0,1,0,0,0,
0,0,progess/128.0f,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap, mMatrix, mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
private class AlphaChangeListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progess = seekBar.getProgress();
mColorMatrix.set(new float[]{
1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,progess/50.0f,0,
});
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap, mMatrix, mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
//更改亮度
private class LightChangeListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progess = seekBar.getProgress();
mColorMatrix.set(new float[]{
progess/128.0f,0,0,0,0,
0,progess/128.0f,0,0,0,
0,0,progess/128.0f,0,0,
0,0,0,1,0,
});
mPaint.setColorFilter(new ColorMatrixColorFilter(mColorMatrix));
mCanvas.drawBitmap(mBitmap, mMatrix, mPaint);
mImageView.setImageBitmap(mModBitmap);
}
}
}
希望本文所述对大家Android程序设计有所帮助。
来源:http://blog.csdn.net/lovoo/article/details/51298968
标签:Android,图片
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
使用纯Java实现一个WebSSH项目的示例代码
2023-03-11 11:32:20
![](https://img.aspxhome.com/file/2023/8/64148_0s.png)
java开发就业信息管理系统
2022-06-19 02:09:30
![](https://img.aspxhome.com/file/2023/5/84195_0s.jpg)
为什么rest接口返回json建议采用下划线形式,不要用驼峰
2023-06-24 23:23:16
JPA配置方式+逆向工程映射到Entity实体类
2023-07-28 12:09:48
![](https://img.aspxhome.com/file/2023/2/57942_0s.png)
流读取导致StringBuilder.toString()乱码的问题及解决
2022-12-20 13:34:14
Android开发中Activity创建跳转及传值的方法
2021-06-11 19:13:35
![](https://img.aspxhome.com/file/2023/7/139467_0s.png)
Android scheme 跳转的设计与实现详解
2021-07-29 03:42:52
MultipartResolver实现文件上传功能
2021-06-19 22:38:15
JAVA 根据设置的概率生成随机数的方法
2023-07-15 00:13:37
ionic监听android返回键实现“再按一次退出”功能
2021-12-24 10:22:57
Java计时器StopWatch实现方法代码实例
2021-07-25 13:43:42
详解微信开发之access_token之坑
2022-09-04 16:49:30
![](https://img.aspxhome.com/file/2023/7/126347_0s.png)
response对象的使用(实例讲解)
2023-11-30 12:23:22
Unity3d获取系统时间
2023-10-20 00:28:56
深入了解Java中String、Char和Int之间的相互转换
2022-09-14 10:18:54
![](https://img.aspxhome.com/file/2023/2/64382_0s.jpg)
Spring2.5.6开发环境搭建图文教程
2023-07-28 18:01:02
![](https://img.aspxhome.com/file/2023/4/74764_0s.jpg)
Spring Batch批处理框架使用解析
2021-12-24 03:41:19
JAVA内部类示例详解及练习
2023-04-05 06:42:39
![](https://img.aspxhome.com/file/2023/7/62427_0s.png)
Java实现的校验银行卡功能示例
2022-01-28 19:33:53
Android去除AlertDialog的按钮栏的分隔线
2021-06-06 18:53:54
![](https://img.aspxhome.com/file/2023/9/94289_0s.png)