【发布时间】:2011-05-04 06:25:24
【问题描述】:
问题:是否可以在php中获取颜色亮度值?
我想要做的是使用 PHP 从图像中获得最“视觉上突出”的颜色。我已经经历了所有的 Stack Overflow,但我无法找到任何解决方案。
目前我已经建立了一个图像颜色搜索,它遍历图像的每个像素,存储颜色,计算色差和亮度值,然后将它们存储在数据库中。
问题:结果在数学上是正确的,但是它们与先前匹配颜色的图像在视觉上并不准确。我认为某种亮度比较可能会解决这个问题。
我注意到,当我按升序(从低到高)对结果进行排序时,结果实际上更准确(尽管在某些情况下不那么准确)。这意味着颜色出现值远低于订购 DESC(最高优先)时的值。
为了计算“亮度”,我使用这个——我不相信它那么强大:
function luminance($pixel){
$pixel = sprintf('%06x',$pixel);
$red = hexdec(substr($pixel,0,2))*0.30;
$green = hexdec(substr($pixel,2,2))*0.59;
$blue = hexdec(substr($pixel,4))*0.11;
return $red+$green+$blue;
}
这是一个显示问题的场景: http://twitpic.com/33e23p http://twitpic.com/33e3x0
我也开始怀疑我的颜色距离函数是否找不到最相似的颜色:
function colorDistance(array $color1, array $color2) {
return sqrt(pow($color1[0] - $color2[0], 2) +
pow($color1[1] - $color2[1], 2) +
pow($color1[2] - $color2[2], 2));
}
【问题讨论】: