【发布时间】:2015-02-23 03:53:23
【问题描述】:
我正在开发一个在 MySQL 中使用大量颜色数据的 Web 应用程序。我使用的常用过程包括基于一些视觉数据的平均颜色计算,然后对这些颜色执行搜索查询。
到目前为止,我所做的是将平均计算颜色存储到 Hex(简单 varchar (6))列中,并将 R G B 值存储到 INT 列中。后来我能够执行这类查询来搜索颜色。
$sql = "SELECT * FROM datatable WHERE ( ABS(color1_red - $red) + ABS(color1_blue-$blue) + ABS(color1_green - $green) < $color_threshold) order by id desc";
它的数据库结构如下所示。
但是当我执行数据库更新时,我注意到我的数据有很多重复,所以我想知道是否有更好的方法在 MySQL 中存储颜色。
我正在考虑尝试做这样的事情:
使用表格颜色
制作表格颜色产生的问题是,这里有固定数量的十六进制格式的颜色,所以一旦您可以从 PHP 访问颜色信息,表格真的有理由吗? 但是旧结构带来的问题是,有一点重复,表格看起来很笨拙。
有没有在 MySQL 中存储颜色信息的好方法和/或有没有办法编写这个函数
$sql = "SELECT * FROM datatable WHERE (ABS (color1_red - $red) + ABS (color1_blue-$blue) + ABS (color1_green - $green) < $color_threshold) order by id desc";
仅使用 HEX 列并避免使用红、绿、蓝 (int()) 列?
谢谢。
【问题讨论】: