【问题标题】:sorting color selections on brightness [duplicate]根据亮度对颜色选择进行排序[重复]
【发布时间】:2013-12-11 09:07:35
【问题描述】:

让我们看看,我给你一些关于我的问题的背景。 我是一个喜欢用这些东西画画的喷枪人。但是我必须从内向外喷漆 RC 车身。这意味着我将颜色反转,所以先涂深色,最后涂上白色。

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

所以我需要的是这个; 我需要一个 php 脚本来按绘画顺序(从暗到亮)对颜色(当前为 rgb)进行排序。我已经用谷歌搜索了,但我没有找到那个有用的,我希望你们能帮助我。

【问题讨论】:

  • 更一般地说,要以良好的方式处理颜色(更接近人类感知的方式),您必须更改颜色空间(参见 HSL、HSB 等)
  • 是的,我知道,我也看到了这个问题,但答案,我根本不明白。因此,在我发现其中一些帖子之后,我决定发布自己的帖子。

标签: php css sorting colors rgb


【解决方案1】:

PHP 有一组函数 (usort(), uasort(), uksort()),允许您使用比较函数对数组进行排序。因此,如果您从this question 中获取公式之一,则可以使用该值对数组进行排序。

$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);

【讨论】:

  • 酷,我会解决这个问题,看看这是否是我需要的脚本......我会回来的。
  • Thomas,我已经对其进行了修改,以实际查看颜色。如果我要把它翻译成刷牙,那一定是; 1-黑色 2-蓝色 3-红色 4-黄色 5-灰色 6-白色 因为如果我在灰色上涂上黄色,你会看到黄色。
  • Thomas 我已经尝试过最近的绘画并将颜色放入脚本中,看起来它毕竟非常准确。看到这个:airbrush.mrdracing.nl/gallery_images/14/perry05.jpg这就是我在说的。
【解决方案2】:

first result on googleGitHub 上出现了这个。

看起来您应该可以将它用于您的目的。

【讨论】:

  • 嗨,是的,我试过了,但它不如 Thomas 的脚本准确,抱歉。感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2014-11-07
  • 2017-04-02
相关资源
最近更新 更多