根据亮度对颜色选择进行排序


sorting color selections on brightness

让我们看看,我给你一点关于我的问题的背景知识。我是一个喜欢用这种东西作画的人。但我喷枪RC车身的,我必须油漆从内到外。这意味着我画的颜色相反,所以首先是深色,最后是白色。

现在,当我的客户(从下拉框中)选择了他们希望我绘制设计的颜色时,我必须自己从暗到亮进行排序。两种颜色很容易,但超过7种颜色就开始变得困难了。

所以我需要的是这个;我需要一个php脚本,按照绘画顺序(从暗到亮)对颜色(目前在rgb中)进行排序。我在谷歌上搜索过,但没有找到有用的,我希望你们能帮我。

PHP有一组函数(usort(), uasort(), uksort()),允许您使用比较函数对数组进行排序。因此,如果你从这个问题中选择一个公式,你可以使用该值对数组进行排序。

$colors = array(
  '#000000',
  '#FF0000',
  '#00FF00',
  '#0000FF',
  '#FFFF00',
  '#00FFFF',
  '#FF00FF',
  '#C0C0C0',
  '#FFFFFF'
);
function colorToLum($color) {
  $red = hexdec(substr($color, 1, 2));
  $green = hexdec(substr($color, 3, 2));
  $blue = hexdec(substr($color, 5, 2));
  return (0.299 * $red + 0.587 * $green + 0.114 * $blue);
}
usort(
  $colors,
  function ($one, $two) {
    return colorToLum($one) - colorToLum($two);
  }
);
var_dump($colors);

谷歌上的第一个结果在GitHub上找到了这个。

看起来你应该能够将它用于你的目的。