2010-02-26 85 views
5

我有一个脚本,从图像中提取最常见的颜色。我想将这些数据存储在MySQL中,然后能够根据点击颜色来拉出图像。例如,如果用户点击红色,我想要拉出其他图像的颜色为“红色”。我不确定如何在一系列的颜色值中搜索或者实际存储在数据库中的值。理想情况下,我想向用户展示渐变色带,并让他们点击它以查找与他们点击的颜色接近的图像。如何将HTML颜色代码存储在MySQL数据库中,然后搜索一个或多个范围?

任何帮助,指针或关键字我可以用谷歌了解更多信息将是用户。

+0

可能重复与此[数据库设计存储图像色彩图案在MySQL用于通过颜色搜索图像] [1] [1]:http://stackoverflow.com/questions/19024769/database-设计到存储的图像颜色模式在MySQL中的搜索图像逐个col – Sendy 2013-10-05 21:01:45

回答

0

有一个class on PHPclasses.org,承诺找到“主色”。我自己并没有使用它,所以我不能说它的质量,但它已经由PHPclasses进行了审查,这通常是值得检查的。

+0

该op说:“我有一个脚本,提取图像中最常见的颜色”,你刚才给出他另一个脚本从图像中提取颜色。他想知道如何搜索提取的颜色。 – TheCarver 2012-11-15 21:32:37

3

看看我对这个question的回答。基本上,你分别存储每个组件的十六进制值,然后你可以用一个简单的mySQL查询来搜索它们。我想哟可以通过迭代图像中的每种颜色并将顶部x颜色放入表中来填充表格。

select imageName from imageColors where (ABS(red - $redHex) + ABS(blue-$blueHex) + ABS(green - $greenHex) < $threshold)

$threshold是颜色之间的最大距离。

+0

当你说$ redHex,$ blueHex,$ greenHex,你的意思是R G B值,而不是十六进制值,因为你不能减去一个十六进制值 - 你能吗? – Ash 2012-10-24 18:53:11

+0

十六进制只是基数16,所以是的,你可以在base16中加上减法乘法积分。将INT存储在数据库中然后在另一侧转换为十六进制将会更容易。 – 2012-10-25 23:43:10

1

我的第一个想法是,您最好的选择是使用6位十六进制,并将每个组件(红色,绿色,蓝色)存储在单独的字段中。

寻找“红色”的东西?选择红色数高,绿色和蓝色相对较低的记录,然后准备好调整您的截止点。

相关问题