首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSL到RGB值

HSL到RGB值
EN

Code Golf用户
提问于 2017-12-09 17:45:21
回答 3查看 5.1K关注 0票数 18

RGB (Red Green Blue)颜色模型的主要目的是在电视和计算机等电子系统中对图像进行感知、表示和显示,HSL (色调饱和度光)是计算机图形研究人员在20世纪70年代设计的一种替代颜色模型,旨在更好地与人类视觉感知造色属性的方式保持一致。

下面是RGBHSL的wiki文章。图形程序通常在HSL中进行计算,然后转换成大多数屏幕的首选格式: RGB。

其任务是编写一个函数/程序,该函数/程序以HSL作为输入并输出RGB。

您可以为I/O选择首选的表示形式,只要它们之间保持一致。

例如,它们可以是包含3个元素的数组/元组,也可以是具有3个属性(名为hsl )的对象,但我将接受其他聪明的变体,比如将hsl作为一个整数(丢失精度)并输出一个rgb整数。

可以假定输入在范围和格式上是安全的,这两者您都可以决定。我强烈建议使用范围0-1 0-1 0-10-360 0-100 0-100表示hsl,0-1 0-1 0-10-255 0-255 0-255表示rgb。

每个答案都需要指定以上两种,如果您对这些答案感到特别自豪,请在答案中添加各种变体,即使它们没有比其他变体更少的字符。把最小的放在上面。

0-360 0-100 0-1000-255 0-255 0-255的伪测试用例

代码语言:javascript
复制
h   s   l   → r   g   b

0   0   0   → 0   0   0
90  56  17  → 43  68  19
202 19  39  → 81  104 118
72  55  26  → 88  103 30

转换的公式可以找到这里

这是一种可视化转换的好方法:

EN

回答 3

Code Golf用户

发布于 2017-12-09 23:44:32

Python 2,32字节

代码语言:javascript
复制
from colorsys import*;hls_to_rgb

在网上试试!

这个功能实际上是通过hls_to_rgb库中的colorsys内置到Python中的。地雷输入的格式是HLS的0-1范围(而不是HSL,这两者都是相同事物尽管如此,HSL更常见.的共同缩写)。并以0到1的元组输出RGB值。

Credits

感谢Jonathan指出我只需要导入它(然后进一步帮助我减少字节计数)。

票数 5
EN

Code Golf用户

发布于 2017-12-09 18:55:25

Mathematica,155个字节

代码语言:javascript
复制
(x~Clear~c;d=Piecewise@Table[{(P=Permutations)[P@{c,x,0}][[42,i]],(i-1)<=#<i*p},{i,6}];c=(1-Abs[2#3-1])#2;x=c(1-Abs[Mod[#/(p=60),2]-1]);m=#3-c/2;(m+d)255)&

在网上试试!

票数 4
EN

Code Golf用户

发布于 2017-12-09 21:08:15

R,88字节

代码语言:javascript
复制
function(h,s,l){v=(2*l+s*(1-abs(2*l-1)))/2;col2rgb(hsv(h,ifelse(v==0,v,(2*(v-l))/v),v))}

在网上试试!

此函数以H、S和L值作为输入,将RGB值作为0-255远程值输出。它将HSL表示转换为HSV表示,然后使用hsv()将HSV表示转换为R颜色(即十六进制表示- #rrggbb),然后使用col2rgb()将R颜色转换为RGB值。

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/150250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档