android中bitmap置灰以及变成任意你想要的颜色方法

找到组织 发布于 2014/01/09 17:26
阅读 5K+
收藏 4

在android中颜色是由一堆数字来存储的确切的说是一个5*4的二维矩阵,,而bitmap图片的颜色矩阵是有一个5*1的矩阵存储的分别是rgb透明度,第五列颜色偏移量。(M*C)通常在改变一个图片的颜色改变一个图片的颜色偏移量就可以了,m1中就是将红绿增加100这时候会发现颜色会泛黄。好下面是在实际应用中会用的代码:

int width=bitmap.getWidth();

    int height=bitmap.getHeight();

    Bitmap grayImg = null;

    try{

    grayImg = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(grayImg);

    Paint paint = new Paint();

    ColorMatrix colorMatrix = new ColorMatrix();

    float[] colorArray = {1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0};

    colorMatrix.setSaturation(0);

//     colorMatrix.set(colorArray);

    ColorMatrixColorFilter colorMatrixFilter = new ColorMatrixColorFilter(colorMatrix); 

    paint.setColorFilter(colorMatrixFilter);

    canvas.drawBitmap(bitmap,0,0, paint);

    bitmap.recycle();

    }catch(Exception e) {

    e.printStackTrace();

    }

当你改变 colorArray的值时会得到不同的效果,当然你要是想置灰一个图片那么在android中会有一个很方便的方法就是直接将饱和度置为0( colorMatrix.setSaturation(0);)这个可以点进源码看见解释。最后附上一个我的开源项目就一个类介绍的是几个bitmap的处理形式:http://git.oschina.net/xulong/BitmapUtil.git

加载中
0
找到组织
找到组织
我也没太明白,只是了解一点浅显的,拿出来跟大家聊一下。
0
nevans
nevans

上传效果截图,说明操作前的样子,操作后的样子才能更好解释你想表达的意思。另外,你的project中文乱码了。

找到组织
找到组织
具体什么效果得要自己尝试一下,还有至于乱码,那你是不是自己稍微调一下编码方式啊,这个您应该知道吧。
返回顶部
顶部