En este artÃculo te explicaremos como convertir del código de color RGB a hexadecimal y de hexadecimal a RGB utilizando PHP. Para ello hemos creado una función de PHP para convertir el código de color de RGB a hexadecimal y viceversa. La función rgb2hex2rgb() es la que lleva a cabo esta operación.
Parámetros
La función rgb2hex2rgb() acepta solo un parámetro ($color) con dos tipos distintos de valor, o RGB o hexadecimal.
- $color => Obligatorio. Su valor varÃa dependiendo de lo que quieras convertir. Es decir, si es RGB tendrás que pasar a la función una cadena similar a 255,255,255 o 255 255 255 o 255.255.255. Y si quieres converir de hexadecimal a RGB, el valor que le tendrÃas que pasar serÃa similar a #FFFFFF o FFFFFF.
Valor de retorno
La función devuelve el código de color en formato RGB como un array si el parámetro $color tiene formato hexadecimal. Por el contrario, la función devuelve el código de color en formato hexadecimal como un string si el parámetro $color tiene formato RGB.
- RGB => Array( [r] => 255, [g] => 255, [b] => 255)
- HEX => #FFFFFF
Función rgb2hex2rgb()
/**
*
* Author: CodexWorld
* Author URI: http://www.codexworld.com
* Function Name: rgb2hex2rgb()
* $color => HEX or RGB
* Returns RGB or HEX color format depending on given value.
*
**/
function rgb2hex2rgb($color){
if(!$color) return false;
$color = trim($color);
$result = false;
if(preg_match("/^[0-9ABCDEFabcdef#]+$/i", $color)){
$hex = str_replace('#','', $color);
if(!$hex) return false;
if(strlen($hex) == 3):
$result['r'] = hexdec(substr($hex,0,1).substr($hex,0,1));
$result['g'] = hexdec(substr($hex,1,1).substr($hex,1,1));
$result['b'] = hexdec(substr($hex,2,1).substr($hex,2,1));
else:
$result['r'] = hexdec(substr($hex,0,2));
$result['g'] = hexdec(substr($hex,2,2));
$result['b'] = hexdec(substr($hex,4,2));
endif;
}elseif (preg_match("/^[0-9]+(,| |.)+[0-9]+(,| |.)+[0-9]+$/i", $color)){
$rgbstr = str_replace(array(',',' ','.'), ':', $color);
$rgbarr = explode(":", $rgbstr);
$result = '#';
$result .= str_pad(dechex($rgbarr[0]), 2, "0", STR_PAD_LEFT);
$result .= str_pad(dechex($rgbarr[1]), 2, "0", STR_PAD_LEFT);
$result .= str_pad(dechex($rgbarr[2]), 2, "0", STR_PAD_LEFT);
$result = strtoupper($result);
}else{
$result = false;
}
return $result;
}
Uso
Para utilizar la función rgb2hex2rgb() tendrÃas que escribir algo como:
$hexString = rgb2hex2rgb('255,255,255');
$rgbArray = rgb2hex2rgb('#FFFFFF');
Fuente: codexworld.com
