先说一下调色的一些基本概念
图片的色彩主要由色相、饱和度、明度决定。色相主要是说色彩的变化,比如红色变化后变成绿色。饱和度是说颜色的鲜艳、丰富程度。而明度则是强调明暗,最暗则为全黑,最亮为全白。明度的概念比较好理解。下面用photoshop里的图片来说明色相和饱和度。
色相表现为色轮的旋转角度。
photo文本框中显示的值反映像素原来的颜色在色轮中旋转的度数。正值表示顺时针旋转,负值表示逆时针旋转。数值的范围可以从 -180 到 +180。
饱和度表现为距离色轮中心的距离
颜色相对于所选像素的起始颜色值,从色轮中心向外移动,或从外向色轮中心移动。数值的范围可以从 -100 到 +100。
明亮度则表现为RGB各分量的大小,0表示最暗,255表示最亮
java代码:
Bitmapshow; //这就是原始的图片
intflag; // 比特位0 表示是否改变色相,比位1表示是否改变饱和度,比特位2表示是否改变明亮度
int wi =show.getWidth(); //得到宽度
int he =show.getHeight(); //得到高度
Bitmap bmp =Bitmap.createBitmap(wi, he,Bitmap.Config.ARGB_8888);
//创建一个相同尺寸的可变的位图区,用于绘制调色后的图片
Canvas canvas = newCanvas(bmp); //得到画笔对象
Paint paint = newPaint(); //新建paint
paint.setAntiAlias(true); //设置抗锯齿,也即是边缘做平滑处理
ColorMatrix cm1=new ColotMatrix(); //用于颜色变换的矩阵,android 位图颜色变化处理主要是靠该对象完成
ColorMatrixcm2=new ColotMatrix();
ColorMatrix cm3=new ColotMatrix();
cm1.reset(); //设为默认值
if ((flag & 1) !=0) //需要改变色相
{
//hueColor就是色轮旋转的角度,正值表示顺时针旋转,负值表示逆时针旋转
cm1.setRotate(0, hueColor); //控制让红**在色轮上旋转hueColor葛角度
cm1.setRotate(1, hueColor); //控制让绿红**在色轮上旋转hueColor葛角度
cm1.setRotate(2, hueColor); //控制让蓝**在色轮上旋转hueColor葛角度
//这里相当于改变的是全图的色相
}
if ((flag & 2) !=0) //需要改变饱和度
{
//saturation 饱和度值,最小可设为0,此时对应的是灰度图(也就是俗话的“黑白图”),
//为1表示饱和度不变,设置大于1,就显示过饱和
cm2.reset();
cm2.setSaturation(saturation);
cm1.postConcat(cm2); //效果叠加
}
if ((flag & 4) !=0)
{
//f 表示亮度比例,取值小于1,表示亮度减弱,否则亮度增强
cm3.reset();
cm3.setScale(f, f, f, 1); //红、绿、蓝三分量按相同的比例,最后一个参数1表示透明度不做变化,此函数详细说明参考 android doc
cm1.postConcat(cm3); //效果叠加
}
paint.setColorFilter(new ColorMatrixColorFilter(cm1));//设置颜色变换效果
canvas.drawBitmap(show,0, 0, paint); //将颜色变化后的图片输出到新创建的位图区
returnbmp; //返回新的位图,也即调色处理后的图片
分享到:
相关推荐
在代码内部动态改变图片颜色,注意:只能改变纯色图片颜色,如图片包含两种及以上颜色,会整个图片的颜色变为相应颜色
android listView 改变选中行的 字体颜色和 图片
主要介绍了Android 实现把bitmap图片的某一部分的颜色改成其他颜色,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
本文实例讲述了Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法。分享给大家供大家参考,具体如下: 一、如图 二、代码实现 public class ColorImageActivity extends Activity { private ImageView ...
android通过按钮改变背景颜色,需要学习的同学可以下载研究。
Android TabLayout+fragment(左右切换文字颜色渐变,Tab 自定义文字和图片)
Android高仿qq发送图片中编辑图片功能,支持图片涂鸦、擦除、改变画笔颜色和粗细;多点触控放大缩小、移动;代码注释清除,扩展性强
但这个开源并不是,采用drawable注入imageView的方式,可以支持Android四大图片框架和其他的一些框架,只要是继承ImageView和你可以监听到图片下载的回调事件,都可以使用该项目。 主要功能: 1.可动态...
仿造美图秀秀移动鼠标调整seekbar,调整图片的颜色 项目布局如下: <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android xmlns:tools=http://schemas.android.com/tools android:layout_...
BottomNavigtionView和viewPager的结合使用,同时解决图标都显示同样的颜色,而不显示UI设计的图标的问题
Android高仿qq发送图片中编辑图片功能,支持图片涂鸦、擦除、改变画笔颜色和粗细;多点触控放大缩小、移动;代码注释清除,扩展性强.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考...
最近做 android 项目遇到这个问题,为了保持 app 风格一致,需要将原生的EditText底线颜色改成橙色。网上搜了一些解决方案,特此记录总结一下。 效果图 默认的EditText底线颜色是蓝色的, 我们想实现橙色的效果 ...
类似Android微博客户端,个人中心界面,上推时头部图片移除,下拉时头部图片显示全部隐藏部分,并且自动回弹。同时title的颜色会改变。基于PullPushLayout修改。
自定义SeekBar, 能改变尺寸、颜色、滑块图片、刻度图片、刻度文字和气泡指示器,当滑动时显示带有进度的气泡指示器
图标改变颜色:Drawable的变色,让Android也能有iOS那么方便的图片色调转换,就像同一个图标,但是有多个地方使用,并且颜色不一样,就可以用这个方法了。 搜索框: 一般是EditText实现,本文 实现 TextView图片和...
自定义view,使用Canvas制作一个可拖动改变任意形状的四边形,并填充颜色。。