android matrix 亮度,Android ColorMatrix 亮度矩阵 对比度矩阵 黑白矩阵

颜色矩阵M是5*4的矩阵,android中颜色矩阵M是以一维数组m=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t]的方式进行存储的。

矩阵的每行分别是:

R[a b c d e]

G[f g h i j]

B[k l m n o]

A[p q r s t]

图像的RGBA值则存储在一个5*1的颜色分量矩阵C中,要想改变一张图片的颜色效果,只需要改变图像的颜色分量矩阵即可。

在对ColorMatrixFilter过滤时候,传入的这个参数ColorMatrix,首先应该postConcat亮度矩阵:

float lum = (亮度百分比 - 50) * 2 * 255 * 0.01f;

1, 0, 0, 0, lum,

0, 1, 0, 0, lum,

0, 0, 1, 0, lum,

0, 0, 0, 1, 0

再postConcat对比度矩阵:

//scale为1时为普通模式,[0 , 1]为减少对比度,[1 , 1 + factor]为增加对比度

float scale = 1;

if (contrast < 50)

{

scale = contrast / 50f;

}

else if (contrast > 50)

{

scale = (contrast - 50) / 50f * 2.5f + 1;

}

float lum = 256 * 亮度比/ 100 * (1f - scale);

最终矩阵应该为

scale, 0, 0, 0, lum,

0, scale, 0, 0, lum ,

0, 0, scale, 0, lum ,

0, 0, 0, 1, 0

最后再乘一些效果矩阵,比如黑白矩阵:

float a = 0.3086f * 256;

float b = 0.6094f * 256;

float c = 0.0820f * 256;

float lum = -256 * 黑白比;

a, b, c, 0, lum,

a, b, c, 0, lum,

a, b, c, 0, lum,

0, 0, 0, 1, 0}

图片效果:冲蚀 和 填充方式:水印是不同的效果。 水印是指将一个图印在一个图上。水印效果里面可以添加冲蚀,这种通常被用来做背景图片。如果水印未选择冲蚀,那么水印上去的应该是原图。 冲蚀效果是通过调整图片的 对比度和 亮度来实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值