Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/09/2009, 13:17
Lucidus
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Función para (oscurezer/aclarar) un color rgb.

Aquí muestro una posible función en php para oscurecer un color, basandome en lo que tú mencionas más arriba. He dejado el segundo parámetro de la función para que puedas decidir cuanto quieres oscurecer el color. La llamada a la función sería así:

$uncolor = "#FF0000";
$mas_oscuro = oscurece_color($uncolor, 32); //Aquí la función devuelve #DF0000

<?
function oscurece_color($color,$cant){
//voy a extraer las tres partes del color
$rojo = substr($color,1,2);
$verd = substr($color,3,2);
$azul = substr($color,5,2);

//voy a convertir a enteros los string, que tengo en hexadecimal
$introjo = hexdec($rojo);
$intverd = hexdec($verd);
$intazul = hexdec($azul);

//ahora verifico que no quede como negativo y resto
if($introjo-$cant>=0) $introjo = $introjo-$cant;
if($intverd-$cant>=0) $intverd = $intverd-$cant;
if($intazul-$cant>=0) $intazul = $intazul-$cant;

//voy a convertir a hexadecimal, lo que tengo en enteros
$rojo = dechex($introjo);
$verd = dechex($intverd);
$azul = dechex($intazul);

//voy a validar que los string hexadecimales tengan dos caracteres
if(strlen($rojo)<2) $rojo = "0".$rojo;
if(strlen($verd)<2) $verd = "0".$verd;
if(strlen($azul)<2) $azul = "0".$azul;

//voy a construir el color hexadecimal
$oscuridad = "#".$rojo.$verd.$azul;

//la función devuelve el valor del color hexadecimal resultante
return $oscuridad;
}
?>

Saludos.