Foros del Web » Programando para Internet » PHP »

Logaritmo del color rgb (obtener claro/osucro) RESULETO :) MUY PRACTICO

Estas en el tema de Logaritmo del color rgb (obtener claro/osucro) RESULETO :) MUY PRACTICO en el foro de PHP en Foros del Web. Alguna función para oscurezer o enclarezer un color rgb hexadecimal?...
  #1 (permalink)  
Antiguo 04/06/2008, 16:23
 
Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
Logaritmo del color rgb (obtener claro/osucro) RESULETO :) MUY PRACTICO

Alguna función para oscurezer o enclarezer un color rgb hexadecimal?

Última edición por reverendo_chila; 05/06/2008 a las 08:24
  #2 (permalink)  
Antiguo 05/06/2008, 07:33
 
Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Teniendo un color rgb, obtener un color más osucuro y otro más claro.

UP!

nadie sabe algun logaritmo para oscurezer o aclarar un color??????????
  #3 (permalink)  
Antiguo 05/06/2008, 07:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Teniendo un color rgb, obtener un color más osucuro y otro más claro.

algoritmo.... si bien sabes es base 6

el primer paso es descomponer sus valores HEX en RGB

ya teniendo sus RGB ... aumentas R, G, B uno por uno... o como gustes

lo malo.... es que yo no soy bueno para las matematicas, pura logica... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 05/06/2008, 08:23
 
Fecha de Ingreso: junio-2008
Mensajes: 23
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Teniendo un color rgb, obtener un color más osucuro y otro más claro.

bien he resuelto el alogaritmo :) es facil y simple , una gran funcionalidad para php :)

si alguien lo quiere saber es este:

//Calculo en hexa
UMBRAL:
(FF+FF+FF)/3 = 80

//El color que queramos entrar lo sumamos ejemplo #FF00CC i dividimos x 3
COLOR:
(FF+00+CC)/3 = 99

si color > 80 = ÉS un color claro, por lo tanto tenemos que oscurezerlo, como? restando 22 en hexa a cada componente rgb. En caso de que un componente quiera pasar de menos de 00, se queda en 00

Nuestre ejemplo entraria en esta condicion y daria esto:
FF00CC

FF-22=DD
00-22= 00 (YA QUe se quiere pasar de 22)
CC-22 = AA

resultado: DD00AA
SI COLOR < 80 = és un color oscuro debemos aclararlo. como? sumando 22 a cada componente rgb en hexa. En caso de que un componente una vez sumado de más de FF, se queda en FF.

Bueno aqui el logaritmo funciona parece :) fácil pero me costo 2 dias deducirlo.
  #5 (permalink)  
Antiguo 05/06/2008, 08:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Logaritmo del color rgb (obtener claro/osucro) RESULETO :) MUY PRACTICO

genial.... haber que sale!!!! :aplausos:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 05/06/2008, 11:55
 
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;

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:31.