Atitit 从 RGB 到 HSL 或 HSV 的转换
Posted attilaxAti
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atitit 从 RGB 到 HSL 或 HSV 的转换相关的知识,希望对你有一定的参考价值。
Atitit 从 RGB 到 HSL 或 HSV 的转换
1.1. 从 RGB 到 HSL 或 HSV 的转换公式与原理1
1.2. public static HSV RGB2HSV(Color clr) {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://www.cnblogs.com/attilax/
Atiend
以上是关于Atitit 从 RGB 到 HSL 或 HSV 的转换的主要内容,如果未能解决你的问题,请参考以下文章
Atitit hsv转grb 应该优先使用hsv颜色原则 方便人类