当前位置: 首页 > 知识库问答 >
问题:

将十六进制颜色分为红色,绿色,蓝色,黄色,橙色,

叶健柏
2023-03-14

有没有一种方法可以轻松地将给定的十六进制颜色代码分配给更一般的类别(红色、绿色、蓝色、黄色、橙色、粉色、黑色、白色、灰色...)?

比如#ffcc55-

编辑:甚至与adobe photoshop类似,找到最接近的网络安全颜色,这样可以将颜色数量减少到256种,这已经是一个很好的解决方案了!

共有2个答案

阴鸿才
2023-03-14

我不是一个php大师,所以在php中可能有更有效的方法来解决这个问题,但是我将每个颜色设置为一个数组,所以每个颜色类别有3个数字。然后找出你建议的颜色和其他颜色之间的数学距离。保存最近的匹配项并返回其名称。

function getcolorname($mycolor) {
    // mycolor should be a 3 element array with the r,g,b values 
    // as ints between 0 and 255. 
    $colors = array(
        "red"       =>array(255,0,0),
        "yellow"    =>array(255,255,0),
        "green"     =>array(0,255,0),
        "cyan"      =>array(0,255,255),
        "blue"      =>array(0,0,255),
        "magenta"   =>array(255,0,255),
        "white"     =>array(255,255,255),
        "grey"      =>array(127,127,127),
        "black"     =>array(0,0,0)
    );

    $tmpdist = 255*3;
    $tmpname = "none";
    foreach($colors as $colorname => $colorset) {        
        $r_dist = (pow($mycolor[0],2) - pow($colorset[0],2));
        $g_dist = (pow($mycolor[1],2) - pow($colorset[1],2));       
        $b_dist = (pow($mycolor[2],2) - pow($colorset[2],2));
        $totaldist = sqrt($r_dist + $g_dist + $b_dist);
        if ($totaldist < $tmpdist) {        
            $tmpname = $colorname;
            $tmpdist = $totaldist;
        }
    }
    return $tmpname;
}
景国兴
2023-03-14

这是从http://php.net/manual/en/function.dechex.php,cory在lavacube.com上的评论:

<?php

function color_mkwebsafe ( $in )
{
    // put values into an easy-to-use array
    $vals['r'] = hexdec( substr($in, 0, 2) );
    $vals['g'] = hexdec( substr($in, 2, 2) );
    $vals['b'] = hexdec( substr($in, 4, 2) );

    // loop through
    foreach( $vals as $val )
    {
        // convert value
        $val = ( round($val/51) * 51 );
        // convert to HEX
        $out .= str_pad(dechex($val), 2, '0', STR_PAD_LEFT);
    }

    return $out;
}

?>

例如:color_mkwebsafe('0e5c94');电话:006699

 类似资料:
  • 问题内容: 该方法返回单个int。如何分别获得红色,绿色和蓝色作为0到255之间的值? 问题答案: Java的Color类可以进行转换:

  • 问题内容: 我在该主题上找到的所有内容都只是将十六进制转换为rgb,然后添加一个Alpha1。我也想从十六进制数字中获得所需的Alpha。 诸如或明显具有不为0或1的Alpha值的颜色。 问题答案: 我已经制作了一个快速的JSfiddle表格,可以将8位十六进制代码转换为CSS rgba值;) 基础很简单-将您提供的字符串分成两位数的一部分,并转换为alpha通道的百分比率和RGB通道的小数位。标

  • 这就是我所做的 这将返回一个字符串“0XFFhexcode”,我想将其转换为long,将其存储,然后将其用作颜色 我有以下错误

  • 如果知道红色、绿色和蓝色的“权重”,可以使用以下类创建颜色: 并在HTML中使用它,如下所示: 对于上面显示的值,为暗灰色,为白色。 但是,如果一个人想要代表其他颜色的组合,比如绿色、蓝色、橙色和金色,该怎么办? 有没有一种方法可以用下面这样的符号来定义这样的颜色? 或者使用,其中中的字母分别代表绿色、蓝色、橙色和金色? 其目的是通过上面的CSS定义 将以这四种颜色的加权组合显示文本。 我相信这是

  • 本文向大家介绍Flutter十六进制颜色转换成颜色对象,包括了Flutter十六进制颜色转换成颜色对象的使用技巧和注意事项,需要的朋友参考一下 十六进制颜色值格式一般如:#ff0000,以#开头,后面跟着6个十六进制字符。 而flutter中不能直接使用此类形式的颜色值,所以必须要转换为flutter颜色对象。 参考地址: https://stackoverflow.com/questions/5

  • 我遇到过这个奇怪的问题,在开始时,字段的颜色更改为,就像在出现时一样。而且,这种情况并不是每次都发生,只是在某些情况下才会出现。如何修复此bug?任何帮助都很感激。请参阅图片更多。这是代码 以下是样式: