【问题标题】:Is there a way to group hex colors using php有没有办法使用 php 对十六进制颜色进行分组
【发布时间】:2018-07-30 06:55:58
【问题描述】:

我正在使用我在 GitHub 中找到的 PHP 颜色提取类,用于我正在进行的项目。

颜色提取器类

https://github.com/humanmade/Colors-Of-Image

我的问题是,有没有办法将颜色分组为主要颜色。

例子:如果你在课堂上取红色会给出

#ff0000 
#e50000 
#cc0000 

依图片而定。我想做的是在保存到数据库之前将所有这些颜色设为红色。

是否有任何公式可以检查颜色范围?我搜索了几天,但找不到任何信息。感谢您的时间。

【问题讨论】:

  • 我不明白你的问题。您是否只想将完整图像的红色通道作为图像保存在数据库中?
  • @KIKO Software 我想概括颜色。就像任何红色的十六进制变成红色,任何橙色的十六进制变成橙色一样。
  • 你说话像人,而不是程序员。你是说如果图像中的一个像素是红色的,你想让那个像素全红#FF0000

标签: php colors hex color-picker


【解决方案1】:

这实际上取决于您希望拥有多少组但是因为三对负责红-绿-蓝,您可以将整个字符串(没有哈希)分成几对,然后用@987654321 将每对计算成十进制@函数,看看它们是否在你选择的一定范围内。

即:如果十六进制结果远大于第二对和第三对的总和,那么您很可能会看到红色的某种变体。

示例代码:

$colors = [
    '#ff0000',
'#e50000',
'#cc0000',
];

foreach ($colors as $hex){
    list($redHex,$greenHex,$blueHex) = str_split(trim($hex,'#'),2);
    $redVal = hexdec($redHex);
    $greenVal = hexdec($greenHex);
    $blueVal = hexdec($blueHex);
    if($redVal > $greenVal+$blueVal){
        echo $hex.' is most likely red';
    }
}

【讨论】:

  • 似乎十六进制只允许 RGB?
  • 用我的意思的示例代码查看我的更新答案
猜你喜欢
  • 2020-03-05
  • 2011-06-08
  • 2011-11-18
  • 1970-01-01
  • 2018-01-19
  • 2016-11-12
  • 2020-08-30
  • 2011-02-01
  • 2022-08-11
相关资源
最近更新 更多