2011-03-26 51 views
3

是否存在将输入颜色的十六进制值并输出该值属于哪个颜色族的算法?例如,如果我输入3333FF,它会识别为一片蓝色。我需要能够输入任何十六进制值并将其缩小到标准色轮上加上黑色,白色和灰色的24种颜色之一。 (我会考虑黑色所有灰度值高达#151515,白色所有值低于#F1F1F1)用于将十六进制解析为彩色族的算法

+1

你见过ColorTranslator.FromHtml()在http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.fromhtml.aspx?似乎有限,但。 – 2011-03-26 02:59:25

+0

您可以先取每个通道/组件并将它们四舍五入(可能根据自定义规则),然后将重新组合的值与已知值进行匹配。 – ssube 2011-03-26 02:59:30

回答

3

一种方法是convert the hex code to HSV,然后将色相值分成区域。所以你只要检查一下色调,如果它在这两个值之间是红色的,如果它们之间是黄色的,你也可以检查饱和度和亮度以确定叫做白色,灰色和黑色的东西。这些门槛将取决于你。

+0

这太棒了。谢谢! – BigPete 2011-03-26 03:10:51

+1

@BigPete你能分享这个实现代码吗? – Lijo 2012-08-07 09:02:52