将HSL转换为RGB

该函数接受一个 HSL 颜色码并将其转换为 RGB。

它应该输出 97、153、194。

但实际输出为 0.3808、0.60153333333333、0.7592。

function HSL(hue, saturation, lightness, alpha)
    如果色相小于 0 或大于 360,则返回 000、alpha。
    如果饱和度小于 0 或大于 1,则返回 000、alpha。
    如果亮度小于 0 或大于 1,则返回 000、alpha。
    计算色度:(1 - math.abs(2 * lightness - 1)) * saturation。
    计算 h:hue/60。
    计算 x:(1 - math.abs(h % 2 - 1)) * chroma。
    初始化 r、g、b 的值为 0。
    如果 h 小于 1,则 r=g=chroma,b=0。
    如果 h 小于 2,则 r=x,g=chroma,b=0。
    如果 h 小于 3,则 r=0,g=chroma,b=x。
    如果 h 小于 4,则 r=0,g=x,b=chroma。
    如果 h 小于 5,则 r=x,g=0,b=chroma。
    否则,r=chroma,g=0,b=x。
    计算 m:lightness - chroma/2。
    返回 r+m、g+m、b+m、alpha。
end

print(HSL(205, .44, .57))

原文链接 https://stackoverflow.com/questions/10393134

点赞
stackoverflow用户282536
stackoverflow用户282536

你的函数返回值在 0-1 的范围内; 将其乘以 256 就可以得到在 0-256 范围内的值。

2012-05-01 08:03:56