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

时间:2012-09-12 08:08:56

标签: image perl colors imagemagick color-scheme

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

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

3 个答案:

答案 0 :(得分:6)

使用printfsprintf格式{/ 1}},

%x

<强>输出:

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

答案 1 :(得分:3)

这是一种方法:

my @rgb     = (102, 205, 0);
my $hex_rgb = sprintf "#%02X%02X%02X", @rgb;

答案 2 :(得分:2)

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