ICode9

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

合并两个ColorMatrix或在Imageview上同时应用两个或多个ColorMatrix

2019-11-27 20:28:50  阅读:257  来源: 互联网

标签:image-processing android-imageview android-image colormatrix android


我正在更改ImageView的亮度,对比度,饱和度和色相.我已经搜索了很多.

我得到了一些与ColorMatrix一起工作的代码.

[1.]对于亮度,ColorMatrix有点像

    float brightness = (-50F * 1.5F);
    ColorMatrix cmB = new ColorMatrix();
    cmB.set(new float[] { 1, 0, 0, 0, brightness,
    0, 1, 0, 0,brightness,
    0, 0, 1, 0, brightness,
    0, 0, 0, 1, 0 });
    myImageView.setColorFilter(new ColorMatrixColorFilter(cmB));

正确地工作.

[2.]对于对比度ColorMatrix是不同的,它也可以正常工作.

但是,所有这些ColorMatrix都可以单独工作.意味着最后一次应用ColorMatrix的效果仅在ImageView上发生,因为它确实做到了这一点,从而消除了之前应用的ColorMatrix的影响,并且设置最后一次应用了ColorMatrix.

现在,我想同时合并或混合所有的ColorMatrix.意味着要在Brightnrs / Saturation / Hue的ColorMatrix效果上应用对比度ColorMatrix.

解决方法:

如果要应用两个颜色矩阵,只需将它们相乘即可.

如果您具有颜色矩阵A和颜色矩阵B,则:

C = B * A;
outpixel = C * inpixel 

相当于

outpixel = B * A * inpixel

编辑

我只是注意到这些是5×4矩阵(本来我以为是4×4).由于您不能直接将它们相乘,因此我认为将两个矩阵相乘之前相加第五个标识行(0,0,0,0,1)(使它们都为5×5)并在此之后丢弃第五行是合适的倍增.

标签:image-processing,android-imageview,android-image,colormatrix,android
来源: https://codeday.me/bug/20191127/2076845.html

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

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

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

ICode9版权所有