iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度
  • 894
分享到

Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度

android 2023-05-30 19:05:20 894人浏览 泡泡鱼
摘要

小编给大家分享一下Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、如图二、代码实现pub

小编给大家分享一下Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体如下:

一、如图

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开发中如何使用颜色矩阵改变图片颜色,透明度及亮度”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度

本文链接: https://www.lsjlt.com/news/220711.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度
    小编给大家分享一下Android开发中如何使用颜色矩阵改变图片颜色,透明度及亮度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、如图二、代码实现pub...
    99+
    2023-05-30
    android
  • 如何使用CSS改变图片颜色
    这篇文章将为大家详细讲解有关如何使用CSS改变图片颜色,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言“说到对图片进行处理,我们经常会想到PhotoShop这类的图像处理工具。作为前端开发者,我们经常会...
    99+
    2023-06-08
  • 怎么在Android中使用Drawable改变图片的颜色
    今天就跟大家聊聊有关怎么在Android中使用Drawable改变图片的颜色,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.利用color资源对Drawable变色Drawable...
    99+
    2023-05-30
    android drawable
  • 如何使用css3背景渐变中的透明度来设置不同颜色的背景渐变
    这篇文章主要讲解了“如何使用css3背景渐变中的透明度来设置不同颜色的背景渐变”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用css3背景渐变中的透明...
    99+
    2024-04-02
  • win7系统中如何改变半透明窗口的颜色(已使用Aero主题)
    具体方法 1,鼠标右键点击桌面空白处,选择“个性化”,如下图: 2,打开“控制面板\\外观和个性化\\个性化\窗口颜色和外观”,如下图: 3,在该界面中选中&ld...
    99+
    2023-05-31
    win7 半透明 窗口颜色 主题 系统 Aero 颜色
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作