首页 > 代码库 > Atitit  从 RGB 到 HSL 或 HSV 的转换

Atitit  从 RGB 到 HSL 或 HSV 的转换

 

Atitit   RGB HSL HSV 的转换

1.1. RGB HSL HSV 的转换公式与原理1

1.2. public static HSV RGB2HSV(Color clr) {2

1.3. 参考资料2

 

1.1.  RGB HSL HSV 的转换公式与原理

(rgb) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 1 之间的实数。设 max 等价于 rg  b 中的最大者。设 min 等于这些值中的最小者。要找到在 HSL 空间中的 (hsl) 值,这里的 h ∈ [0, 360)是角度的色相角,而 sl ∈ [0,1] 是饱和度和亮度,计算为:

技术分享

技术分享

技术分享 


h 的值通常规范化到位于 0 360°之间。而 h = 0 用于 max = min 的(就是灰色)时候而不是留下 h 未定义。

HSL HSV 有同样的色相定义,但是其他分量不同。HSV 颜色的 s  v 的值定义如下:

 

技术分享

1.2. public static HSV RGB2HSV(Color clr) {

float r = (float) clr.getRed();

float g = (float) clr.getGreen();

float b = (float) clr.getBlue();

float max = max(r, g, b);

float min = min(r, g, b);

float h = 0;

if (max == min)

h = 0;

else if (r == max && g >= b)

h = (g - b) / (max - min) * 60;

else if (r == max && g < b)

h = (g - b) / (max - min) + 360;

else if (g == max)

h = (b - r) / (max - min) * 60 + 120;

else if (b == max)

h = (r - g) / (max - min) * 60 + 240;

 

float s = (max - min) / max;

if (max == 0)

s = 0;

HSV hsv = new HSV(h, s, max);

return hsv;

}

 

1.3. 参考资料

颜色空间RGBHSV(HSL)的转换 - jiangxinyu的专栏 - 博客频道 - CSDN.NET.html

 

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

 

 

Atitit  从 RGB 到 HSL 或 HSV 的转换