【问题标题】:php trouble getting closest matching colorphp 无法获得最接近的匹配颜色
【发布时间】: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 更准确地找到接近匹配的颜色。我没有例子(这就是为什么这是评论,而不是答案),但应该不难找到。

标签: php colors rgb distance


【解决方案1】:

我将您的颜色放入我的color converter 以分析您的问题。我想你可以看到灰色也是视觉上最华​​丽的搭配。

我认为三元组 124/197/118 不是浅绿色,而是最不饱和的绿色,这可以解释结果。

我不确定您的某些颜色定义。对我来说

000 255 000 = Lime Green
000 128 000 = Green
128 128 128 = Gray (50%)

如果你仍然不喜欢这个结果:

1, leave out gray from your predefined colors

2, define a threshold for returning gray
-> If result is gray but distance > threshold x,
then take the second colosest match

【讨论】:

  • 我试图忽略灰色,现在橙色显示为匹配颜色而不是绿色。
  • 尝试:棕色(150,75,0)|橙色(255,127,0) | 【亮】粉色(255,0,127) | Purple(127,0,255) ... 但请注意,棕色只是深橙色!您可能想查看我网站上的颜色选择器,并在纯色之间移动 30° 距离以获得您的预定义颜色。
【解决方案2】:

这里是一个匹配问题和答案的链接:

RGB to closest predefined color

但是,如果您已经有索引图像,我建议您改用它:

http://php.net/manual/en/function.imagecolorclosest.php

【讨论】:

  • 第一个链接使用与我的脚本中相同的公式,我也尝试使用 imagecolorcloset php 函数,通过创建包含每种预定义颜色的图像,但是它产生相同的结果。
猜你喜欢
  • 1970-01-01
  • 2021-09-30
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 2022-10-09
  • 1970-01-01
相关资源
最近更新 更多