您的位置:首页 > 其它

Atitit  从 RGB 到 HSL 或 HSV 的转换

2016-11-05 01:08 477 查看
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
的转换公式与原理

设 (r, g, b)
分别是一个颜色的红、绿和蓝坐标,它们的值是在 0
到 1
之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在
HSL 空间中的
(h, s, l)
值,这里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈
[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. 参考资料

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


 

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

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

转载请注明来源: http://blog.csdn.net/attilax

Atiend

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: