我正在改变亮度,对比度,饱和度和色调的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. For Contrast ColorMatrix是一种与不同的,它也能正常工作。
但是,所有这些individually.工作ColorMatrix这意味着上一次应用ColorMatrix的效果仅仅是ImageView上的场景,因为它正是这样做的,消除了以前应用的 ColorMatrix的效果,而设置最后一次应用ColorMatrix。
现在我想要同时合并或混合所有的ColorMatrix。的意思是要应用ColorMatrix的对比,对ColorMatrix的亮度/饱和度/色调的影响。
发布于 2012-08-15 18:55:36
如果要应用两个颜色矩阵,只需将它们相乘即可。
如果有颜色矩阵A和颜色矩阵B,那么:
C = B * A;
outpixel = C * inpixel 等于
outpixel = B * A * inpixel编辑
我刚刚注意到它们是5x4矩阵(最初我以为它们是4x4)。由于不能直接乘以它们,我认为在相乘前(使它们都是5x5)之前,应该在两个矩阵中添加一个第5标识行(0,0,0,0,1),并在乘积后丢弃第5行。
发布于 2014-01-31 12:31:36
您可以应用这样的多个矩阵:
ColorMatrix colorFilterMatrix = new ColorMatrix();
colorFilterMatrix.postConcat(getContrastMatrix(contrast));
colorFilterMatrix.postConcat(getBrightnessMatrix(brightness));
imageView.setColorFilter(new ColorMatrixColorFilter(colorFilterMatrix));https://stackoverflow.com/questions/11974895
复制相似问题