首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一组六角色中获取基色

从一组六角色中获取基色
EN

Stack Overflow用户
提问于 2012-12-19 02:18:54
回答 2查看 1.2K关注 0票数 12

我有一套颜色,想把它们分解成10到20种基本颜色。

这不应该是传递的东西的托盘,而是独立于传递的东西。因此,如果使用的图像只是各种颜色的红色,它只会返回红色,可能是浅/暗红色。

我的颜色是下面的方框,输出的例子是线条。在这个例子中,从21种颜色到8种颜色。

以上的十六进制值:

代码语言:javascript
复制
#000000
#ffffff
#003e9f
#d61517
#00a7bd
#001070
#a0210c
#dc9103
#e6151e
#fdfdfd
#011171
#fbfd10
#ffc500
#fdc605
#e6141d
#faf703
#544b20
#796a3a
#7a6b3a

最终输出可能类似于这个彩色车轮的外圈。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-19 02:47:59

提前选择您的base颜色,并制作一个数组-您可以使用12在外圈的颜色轮。使用关联数组作为输出的集合:对于每种输入颜色,找到最接近的基色,并将其作为输出数组的键添加。然后返回数组的键。

要找到颜色距离,你可以把颜色看作三维空间中的点,(x,y,z) = (r,g,b),并使用欧几里得距离。从十六进制字符串中提取组件之后,就像这样:

代码语言:javascript
复制
$dr = $r2 - $r1; 
$dg = $g2 - $g1; 
$db = $b2 - $b1; 
$dist = sqrt($dr * $dr + $dg * $dg + $db * $db);  

如果你愿意的话,你可以做一些花哨的事情,但是如果你想的话,用一个小的颜色列表在它们上面循环,找出最小的距离就可以了。

票数 4
EN

Stack Overflow用户

发布于 2012-12-19 10:18:55

我认为如果您使用hsla表示法,这将更容易完成(并理解)。

如果您的基色总是相同的,您可以为您的色调参数定义20个值(这基本上是一个从0°到360°的角度),并将所有不同的颜色分组到最接近的“基色”,只有色调。

如果您的基本颜色依赖于输入(在您的问题中不清楚),那么@Mark的选择,寻找颜色距离也可以在hsl中完成,只有色调,这将更准确的概念‘颜色的颜色’IMHO。

注意:一种方便的hsl工具:http://mothereffinghsl.com/

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

https://stackoverflow.com/questions/13944629

复制
相关文章

相似问题

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