ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android - ColorMatrix 处理图像对比度

2020-11-23 17:57:39  阅读:588  来源: 互联网

标签:ColorMatrix rsquo ary 0.5 对比度 Android contrast matrix


ColorMatrix 没有直接处理对比度的方法。
内部有一个 4x5的矩阵数组:

 * <pre>
 *   R&rsquo; = a*R + b*G + c*B + d*A + e;
 *   G&rsquo; = f*R + g*G + h*B + i*A + j;
 *   B&rsquo; = k*R + l*G + m*B + n*A + o;
 *   A&rsquo; = p*R + q*G + r*B + s*A + t;</pre>

找到 Android-GPUImage 实现

public static final String CONTRAST_FRAGMENT_SHADER = "" +
            "varying highp vec2 textureCoordinate;\n" +
            " \n" +
            " uniform sampler2D inputImageTexture;\n" +
            " uniform lowp float contrast;\n" +
            " \n" +
            " void main()\n" +
            " {\n" +
            "     lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n" +
            "     \n" +
            "     gl_FragColor = vec4(((textureColor.rgb - vec3(0.5)) * contrast + vec3(0.5)), textureColor.w);\n" +
            " }";

仿照 gl_FragColor 来处理:

//对比度范围 [0,2f]
val matrix = ColorMatrix() //4x5矩阵,rgba+偏移
matrix.setScale(lum, lum, lum, 1f)
val ary = matrix.array
ary[0] = (ary[0] - 0.5f) * contrast + 0.5f
ary[1] = (ary[1] - 0.5f) * contrast + 0.5f
ary[2] = (ary[2] - 0.5f) * contrast + 0.5f

ary[5] = (ary[5] - 0.5f) * contrast + 0.5f
ary[6] = (ary[6] - 0.5f) * contrast + 0.5f
ary[7] = (ary[7] - 0.5f) * contrast + 0.5f

ary[10] = (ary[10] - 0.5f) * contrast + 0.5f
ary[11] = (ary[11] - 0.5f) * contrast + 0.5f
ary[12] = (ary[12] - 0.5f) * contrast + 0.5f
paint.colorFilter = ColorMatrixColorFilter(matrix)

标签:ColorMatrix,rsquo,ary,0.5,对比度,Android,contrast,matrix
来源: https://blog.csdn.net/jjwwmlp456/article/details/110003364

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有