我正在改变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。意味着想要对ColorMatrix of Brightnrs / Saturation / Hue的效果应用ColorMatrix of Contrast。
答案 0 :(得分:3)
如果你想应用两个颜色矩阵,只需将它们相乘即可。
如果你有颜色矩阵A和颜色矩阵B,那么:
C = B * A;
outpixel = C * inpixel
相当于
outpixel = B * A * inpixel
修改
我刚注意到那些是5x4矩阵(最初我认为它们是4x4)。由于你不能直接乘以它们,我认为在乘法之前将两个矩阵添加第5个标识行(0,0,0,0,1)是合适的(使它们都是5x5),并在之后丢弃第5行乘法。
答案 1 :(得分:0)
您可以应用多个这样的矩阵:
ColorMatrix colorFilterMatrix = new ColorMatrix();
colorFilterMatrix.postConcat(getContrastMatrix(contrast));
colorFilterMatrix.postConcat(getBrightnessMatrix(brightness));
imageView.setColorFilter(new ColorMatrixColorFilter(colorFilterMatrix));