我需要幫助從一組預定義的色彩和單一顏色隨機找到最接近的色彩匹配,這裏是我的代碼:PHP的麻煩最匹配的顏色
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`(色調,飽和度,Light)的值,因爲在發現比RGB更接近匹配的顏色時會更準確。我沒有一個例子(這就是爲什麼這是一個評論,而不是一個答案),但它不應該很難找到一些東西。 – 2011-01-06 21:19:27