代码之家  ›  专栏  ›  技术社区  ›  Thariama

如何轻松地将rgb颜色值转换为十六进制颜色值?

  •  2
  • Thariama  · 技术社区  · 12 年前

    我正在使用ImageMagick的perl API。我在rgb方案中接收颜色值,但需要获得十六进制值才能在网站上使用(例如 #FFA8F5 )。

    如何轻松地将rgb颜色值转换为十六进制颜色值?

    3 回复  |  直到 12 年前
        1
  •  6
  •   Toto    12 年前

    使用 printf sprintf 具有 %x 总体安排

    my ($r,$g,$b) = (12,102,250);
    printf("#%02x%02x%02x",$r,$g,$b);
    

    输出:

    #0c66fa
    
        2
  •  3
  •   jmcnamara    12 年前

    以下是一种方法:

    my @rgb     = (102, 205, 0);
    my $hex_rgb = sprintf "#%02X%02X%02X", @rgb;
    
        3
  •  2
  •   yckart Matthew Crumley    12 年前
    function colorToHex(color) {
        if (color.substr(0, 1) === '#') {
            return color;
        }
        var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color),
    
            red = parseInt(digits[2], 10),
            green = parseInt(digits[3], 10),
            blue = parseInt(digits[4], 10),
    
            rgb = blue | (green << 8) | (red << 16);
        return digits[1] + '#' + rgb.toString(16);
    }
    

    Fiddle