| ||||
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 |
| |||
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 |
| ||||
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 |
| |||
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:
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) / 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; }
__________________ hackerhosting.com |