Este artículo muestra dos funciones para convertir códigos de color en formato hexadecimal HTML (por ejemplo #f4f4f4) en los tres valores de color RGB (por ejemplo $r = 170, $g = 237, $b = 67.

La primera función reconoce colores HTML o CSS en formato #numero. Este es el formato hexadecimal que representa tres valores, cada uno de 1 o 2 dígitos, que contienen los componentes rojo, verde y azul que definen el color dado #(hex_rojo)(hex_verde)(hex_azul). El carácter # puede ser omitido y la función funcionará perfectamente.

<?php
function html2rgb($color)
{
    if ($color[0] == '#')
        $color = substr($color, 1);

    if (strlen($color) == 6)
        list($r, $g, $b) = array($color[0].$color[1],
                                 $color[2].$color[3],
                                 $color[4].$color[5]);
    elseif (strlen($color) == 3)
        list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
    else
        return false;

    $r = hexdec($r); $g = hexdec($g); $b = hexdec($b);

    return array($r, $g, $b);
}
?>

La siguiente función el valor de color hexadecimal en formato html proporcionando los valores rojo, verde y azul del color rgb. Los parámetros de entrada son tres respectivamente el rojo, verde y azul del formato RGB y cada uno de ellos está compuesto por 2 dígitos (rgb(rr,vv,aa)). Como resultado da el color en formato hexadecimal #rrvvaa. Los parámetros pasados a la función son convertidos en número enteros y ajustados al rango 0-255 (rango de color de cada componente rgb). Además la función puede ser llamada con un array que contenga los tres valores (rgb($array_de_tres_elementos) o especificando cada valor por separado (rgb($r,$v,$a).

<?php
function rgb2html($r, $g=-1, $b=-1)
{
    if (is_array($r) && sizeof($r) == 3)
        list($r, $g, $b) = $r;

    $r = intval($r); $g = intval($g);
    $b = intval($b);

    $r = dechex($r<0?0:($r>255?255:$r));
    $g = dechex($g<0?0:($g>255?255:$g));
    $b = dechex($b<0?0:($b>255?255:$b));

    $color = (strlen($r) < 2?'0':'').$r;
    $color .= (strlen($g) < 2?'0':'').$g;
    $color .= (strlen($b) < 2?'0':'').$b;
    return '#'.$color;
}
?>

Juan Padial

Escrito por

Juan Padial

Farméutico por casualidades de la vida y por condición apasionado de la informática,...

Comparte este artículo