Foros del Web » Programando para Internet » PHP »

Diferenciando colores con PHP

Estas en el tema de Diferenciando colores con PHP en el foro de PHP en Foros del Web. Quiero obtener si un color es oscuro o claro segun su valor EXADECIMAL (#000000 -> #ffffff) como se puede hacer esto con PHP?...
  #1 (permalink)  
Antiguo 28/06/2004, 19:24
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 16 años
Puntos: 1
Diferenciando colores con PHP

Quiero obtener si un color es oscuro o claro segun su valor EXADECIMAL (#000000 -> #ffffff) como se puede hacer esto con PHP?
__________________
Usuario Registrado de linux #374849
  #2 (permalink)  
Antiguo 28/06/2004, 19:47
 
Fecha de Ingreso: junio-2004
Mensajes: 97
Antigüedad: 13 años, 5 meses
Puntos: 0
php function

int imagecolorat ( resource image, int x, int y);

para mas info lee el manual php en esta web http://us2.php.net/manual/en/function.imagecolorat.php
__________________
hackerhosting.com
  #3 (permalink)  
Antiguo 28/06/2004, 22:03
Avatar de sir_notos  
Fecha de Ingreso: noviembre-2001
Ubicación: Mexicali
Mensajes: 709
Antigüedad: 16 años
Puntos: 1
ok pero eso no es exactamente lo que buscaba .. (aunque esta interesante :p)

Pero mi problema es que tengo una BD con una tabla en la que el usuario puede especificar un color de celda pero si el usuario elije #000000 quiero que el color de la fuente sea #ffffff y y vice versa el problema es que si el usuario elije #ecbc00 no se como le voy a ahcer para que la letra se note

Gracias :)
__________________
Usuario Registrado de linux #374849
  #4 (permalink)  
Antiguo 29/06/2004, 01:35
 
Fecha de Ingreso: junio-2004
Mensajes: 97
Antigüedad: 13 años, 5 meses
Puntos: 0
wow, al principio no entendi muy bien tu pregunta, pero despues la lei bien y me parecio realmente interesante, tanto que investigue un poco y encontre una respuesta,

bueno tu debes saber que el codigo hex de color es realmente rgb, bueno si conviertes ese color a HSL, (hue saturation and luminosity) entonces es mucho mas sencillo saber que tan claro el color es. encontre una funcion en internet que te permite hacer eso usando php:

Código:
/ Sisään: v1, v2, v3 [0..255] 
// Ulos: {0,1,2} [0..1] 
function rgb_to_hsl($v1, $v2, $v3){ 
    $v[0] = $v1/255; // red 
    $v[1] = $v2/255; // green 
    $v[2] = $v3/255; // blue 

    $max = max($v); 
    $min = min($v); 

    $L = ($max+$min)/2; 

    if($max == $min){ 
        $H = 0; 
        $S = 0; 
    } 

    if($L <= 0.5) 
        $S = ($max-$min)/($max+$min); 
    else 
        $S = ($max-$min)/(2-$max-$min); 

    $delta = $max-$min; 

    if($v[0] == $max) $H = ($v[1]-$v[2])/$delta; 
    if($v[1] == $max) $H = 2+($v[2]-$v[0])/$delta; 
    if($v[2] == $max) $H = 4+($v[0]-$v[1])/$delta; 

    $H *= 60; 
    if($H < 0) $H += 360; 

    $out[0] = $H/360; 
    $out[1] = $S; 
    $out[2] = $L; 

    return $out; 
}
la puedes modificar un poco y acoplarla a tus necesidades, no he probado si funciona pero si no ya te di el metodo :) recuerda que lo que te interesa a ti es $L (luminosity)
__________________
hackerhosting.com
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 07:22.