Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/06/2008, 11:55
reverendo_chila
 
Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Logaritmo del color rgb (obtener claro/osucro) RESULETO :) MUY PRACTICO

Función construida y va de puta madre jeje
aqui para compartir:

Título: Función que te devuelve un color más claro o oscuro, segun su claridad, a partir de un color rgb

codigo:
Código PHP:
function generar_color($rgb){
    
//extrec les 3 parts del color:
    
$vermellsubstr($rgb,1,2);
    
$verd substr($rgb,3,2);
    
$blau substr($rgb,5,2);
    
    
//Converteixo de hexadecimal a decimal
    
$enter_vermellhexdec($vermell);
    
$enter_verdhexdec($verd);
    
$enter_blauhexdec($blau);
    
    
//Valor que li sumarem o restarem a cada component rgb:
    
$valor hexdec(22);
    
    
//Calculo l'umbral del color.
    
$umbral 255/2//7F en hexadecimal.
    
    //Calculo la foscor del color entrat:
    
$foscor= ($enter_vermell $enter_verd $enter_blau) /3;
    
    
//El color és clar. Per tant tenim que enfosquirlo restant-li el $valor en cada component rgb.
    
if($foscor >= $umbral){
        
$enter_vermell = ($enter_vermell-$valor<00) ? 00 $enter_vermell-$valor;
        
$enter_verd = ($enter_verd-$valor<00) ? 00 $enter_verd-$valor;
        
$enter_blau = ($enter_blau-$valor<00) ? 00 $enter_blau-$valor;
        
//if($enter_vermell-$valor<00){ $nou_enter_vermell = 00; } else { $enter_vermell=$enter_vermell-$valor; }
        //if($enter_vermell-$valor<00){ $nou_enter_vermell = 00; } else { $enter_vermell=$enter_vermell-$valor; }
    
}
    
    
//El color és fosc. Per tant tenim que aclararlo sumant-li el $valor en cada component rgb.
    
else{
        
$enter_vermell = ($enter_vermell+$valor>255) ? 255 $enter_vermell+$valor;
        
$enter_verd = ($enter_verd+$valor>255) ?  255 $enter_verd+$valor;
        
$enter_blau = ($enter_blau+$valor>255) ?  255 $enter_blau+$valor;
    }
    
$vermell=dechex($enter_vermell);
    
$verd=dechex($enter_verd);
    
$blau=dechex($enter_blau);
    
    
$rgb="#".$vermell.$verd.$blau;
    return 
$rgb;