【发布时间】:2011-06-04 22:17:27
【问题描述】:
我需要帮助从一组预定义颜色和一种随机颜色中找到最接近的颜色匹配,这是我的代码:
color = array('124','197','118'); // LIGHT GREEN
$match = array(
array('255', '000', '000', 'FF0000'), //red
array('000', '255', '000', '00FF00'), //green
array('000', '000', '255', '0000FF'), //blue
array('0', '255', '255', '00ffff'), //cyan
array('117', '076', '036', '754c24'), //brown
array('000', '000', '000', '000000'), //black
array('149', '149', '149', '959595'), //grey
array('242', '101', '034', 'f26522'), //orange
array('245', '152', '157', 'f5989d'), //pink
array('255', '255', '000', 'FFFF00'), //yellow
array('102', '045', '145', '662d91'), //purple
array('255', '255', '255', 'FFFFFF')); //white
echo 'Color: <div style="background-color:#'.$color.';width:25px;height:25px"></div>'; //color
foreach($match as $co) $temp[] = array( sqrt(($color[0]-$co[0])^2+($color[1]-$co[1])^2+($color[2]-$co[2])^2) , $co[3]);
asort($temp);
foreach($temp as $ta) { echo 'Matched Color: <div style="background-color:#'.$ta[1].';width:25px;height:25px"></div>'; break; }
它返回灰色而不是绿色?我该如何解决这个问题?比
【问题讨论】:
-
您可能希望研究计算颜色的
HSL(色相、饱和度、亮度)值,因为这样可以比RGB更准确地找到接近匹配的颜色。我没有例子(这就是为什么这是评论,而不是答案),但应该不难找到。