我希望在Java中实现一个函数,准确计算颜色的亮度,就像C#的getbrightness()函数一样。因此,我需要知道在C#中使用的确切算法。这里有一些算法(链接),但它们中的所有算法都有约5%的误差。
public float GetBrightness()
{
float r = (float)R / 255.0f;
float g = (float)G / 255.0f;
float b = (float)B / 255.0f;
float max, min;
max = r; min = r;
if (g > max) max = g;
if (b > max) max = b;
if (g < min) min = g;
if (b < min) min = b;
return (max + min) / 2;
}
ILSpy
更好,这样你也能得到变量名! - Rawling
Color.GetBrightness()
对于Blue
和Yellow
都返回0.5
。因此,在真实的颜色世界中,它对于任何事情都是完全无用的。可能在 GDI+ 的深处有一些原因,尽管我不知道那是什么。 - TaW