gpt4 book ai didi

android - 使用 ColorMatrix 调整亮度

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:29 28 4
gpt4 key购买 nike

我正在尝试使用 ColorMatrix 调整图像的亮度(您可以在 Photoshop 中尝试调整色相时看到此选项,亮度和亮度也是两个不同的功能)使用 ColorMatrix 但不知道要更改哪些值才能实现这个。

目前我可以使用此代码更改色调

public static void adjustHue(ColorMatrix cm, float value)
{
value = cleanValue(value, 180f) / 180f * (float) Math.PI;
if (value == 0)
{
return;
}
float cosVal = (float) Math.cos(value);
float sinVal = (float) Math.sin(value);
float lumR = 0.213f;
float lumG = 0.715f;
float lumB = 0.072f;
float[] mat = new float[]
{
lumR + cosVal * (1 - lumR) + sinVal * (-lumR), lumG + cosVal * (-lumG) + sinVal * (-lumG), lumB + cosVal * (-lumB) + sinVal * (1 - lumB), 0, 0,
lumR + cosVal * (-lumR) + sinVal * (0.143f), lumG + cosVal * (1 - lumG) + sinVal * (0.140f), lumB + cosVal * (-lumB) + sinVal * (-0.283f), 0, 0,
lumR + cosVal * (-lumR) + sinVal * (-(1 - lumR)), lumG + cosVal * (-lumG) + sinVal * (lumG), lumB + cosVal * (1 - lumB) + sinVal * (lumB), 0, 0,
0f, 0f, 0f, 1f, 0f,
0f, 0f, 0f, 0f, 1f };
cm.postConcat(new ColorMatrix(mat));
}

我想了解如何使用颜色矩阵以相同的方式改变亮度。如果有任何其他方法可以实现这一目标,我愿意寻求解决方案:)

最佳答案

好吧..所以我终于想通了。

可以使用 PorterDuffColorFilter 类调整亮度

这是我正在使用的方法

public static PorterDuffColorFilter applyLightness(int progress) {

if(progress>0)
{
int value = (int) progress*255/100;
return new PorterDuffColorFilter(Color.argb(value, 255, 255, 255), Mode.SRC_OVER);
} else {
int value = (int) (progress*-1)*255/100;
return new PorterDuffColorFilter(Color.argb(value, 0, 0, 0), Mode.SRC_ATOP);
}

}

进度值从-100(暗)到100(亮)

只需将 photoshop 中的值传递给此方法即可。您获得的过滤器可以与绘画和 Canvas 一起使用。

希望这对某人有帮助。

关于android - 使用 ColorMatrix 调整亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175088/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com