将十六进制颜色值转换为近似颜色名称的函数?
我想没有人知道一个函数(最好是 PHP)可以接受十六进制颜色代码并给出该十六进制值的近似颜色名称。我不需要具有数百种颜色的解决方案。即使只有白、黑、红、绿、蓝、棕、橙、黄这些颜色,我的身材也很好。
如果您不知道现有资源,是否有人知道解决此问题的好方法?
预先感谢您的帮助。
I don't suppose anyone knows of a function (PHP, preferably) that can take a hex color code and give an approximate color name for that hex value. I don't need a solution with 100s of colors. Even if it just amounted to the colors white, black, red, green blue, brown orange and yellow, I'd be pretty well in shape.
If you don't know of an existing resource, does anyone know of a good way to approach this problem?
Thanks in advance for the help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
维基百科中有一个颜色列表。
一种简单的实现只会计算要检索名称的颜色与其中每一种颜色之间的距离,并输出更接近的颜色。
如果您将颜色视为 R3 中的向量,则可以将距离计算为 L1 范数:
或 L2 范数:
要转换十六进制表示法,请参阅 此处。
示例脚本:
You have a list of colors here in wikipedia.
A naive implementation would just calculate the distance between the color whose name you want to retrieve and every one of those and output the one that's closer.
If you see the colors as vectors in R3, you could calculate the distance as L1 norm:
or the L2 norm:
For converting the hexadecimal notation, see here.
Example script:
使用 Artefacto 的答案中使用的 wiki 链接,我获取了所有颜色名称并形成了一个包含 1,175 个颜色名称的数组。不幸的是,Stackoverflow 只允许答案中包含 30,000 个字符,因此这里是链接。
Using the wiki link used in Artefacto's answer I grabbed all the color names and formed an array containing 1,175 color names. Unfortunately Stackoverflow only allows 30,000 characters in answers so here's the link.
这是一个更大的颜色数组,第 1 部分:
Here is a bigger colors array, part1:
这是一个更大的颜色数组,第 2 部分:
Here is a bigger colors array, part2: