PHP - 从RGB获取颜色名称

5

我现在在使用PHP的GD库,尝试获取像素颜色名称,例如:绿色,红色,蓝色等等...

我是通过以下方法获取颜色的:

$rgb = ImageColorAt($image, $X, $y);
$r = ($rgb >> 16) & 0xFF ;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

现在,我该如何确定这种颜色是浅绿色、深蓝色、普通蓝色或红色等等?

1
你所给出的颜色名称,它们属于哪个调色板?它们在哪里定义? - hakre
2个回答

4

您需要创建一个关联数组,将值映射为颜色名称(或反向映射)。

请使用此表格的数据填充该数组:http://en.wikipedia.org/wiki/Web_colors

然后您就可以查找在CSS中可用的颜色名称。另外,您还可以添加更多自定义的颜色名称。


1
请不要引用 w3school,它是一个糟糕的资源,可以在 Marc B 提供的链接中找到原因。 - sg3s
1
我之前不知道这个。我的大学教授也提到过W3Schools...被纠正了。 - 0xDEADBEEF

2

你是否认为每种颜色都有自己的名称?
实际上,有16^6>1670万种颜色。

所以,这似乎是不可能的。
但你可以创建自己的数据库(格式为RGB => 可读性强的名称)。


所以- 1张10,000像素的图片=10,000个查询?我不这么认为!但还是谢谢。 - homerun
1
@Mor Sela:RiaD正在提到1670万种颜色名称。您只命名了四个,甚至没有给出该列表的URL。 - hakre
我认为如果您需要对其进行命名,每个页面上不会有10,000种不同的颜色。因此,您可以按颜色对像素进行分组。此外,您可以尝试仅按每个组件的第一个数字进行分组。例如,00-0F、10-1F。 - RiaD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接