PHP-Hispano.net Comunidad hispana de desarrollo web

Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?

4290 usuarios Online (0)

Darse de alta en la web | Recuperar password   
Inicio / Foros / PHP / Manejo Hexadecimal/RGB

Manejo Hexadecimal/RGB

2 respuestas 294 visitas Categoría PHP

Manejo Hexadecimal/RGB

Avatar de BlackFire
* * * * * * *

(Nivel 1 - 1 posts)

#0 Offline BlackFire Usuario 22 jun 10
Buenos días a todos, verán, tengo una pequeña duda sobre el trabajo con colores hexadecimales/rgb en la web (utilizando lenguajes de programación como PHP, JavaScript etc.). Llevo varios días intentando hayar la solucción, pero sin conseguirlo, es por ello que pregunto en esta comunidad.

Esta es la duda:

Tengo un valor numérico (ej: 408), utilizando este como base necesito conseguir un color azulado, pero sin embargo, si el valor es 400, el color deberá ser ligeramente más claro/oscuro, notesé la diferencia de cifras. Para valores menores a 50, color rojizo.

He intentado hacerlo como un switch, pero necesitaría poner un case por cada número, y utilizando ifs ($valor < 400) no se diferenciarian los valores 400 y 408 (anteriormente citados).

¿Conoce alguien alguna forma de conseguir esto? He mirado las funciones (PHP) hexdec, dechex (entre otras), pero no consigo mi objetivo.

Algunos ejemplos de esto que quiero lograr están en esta página esta (véanse las estadísticas).

Espero que ustedes me puedan ayudar con mi duda y que pueda llevarme un buen recuerdo de esta comunidad.

Muchas gracias de antemano, BlackFire360

Re: Manejo Hexadecimal/RGB

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 454 posts)

#1 Offline Eloy8857 Usuario 23 jun 10
En esa página no parece que haya una equivalencia directa entre el valor exacto y el color, sino más bien entre un rango de valores y un color exacto. Más que nada porque hay dos valores distintos que poseen el mismo color.

Esto lo puedes hacer definiendo los colores según el rango, y usando:


<?php
switch (true) {
    case (
$value >= && $value <= 60):{
        
$color '#FF0000';
    }
    break;

    case (
$value >= 61 && $value <= 80):{
        
$color '#0000FF';
    }
    break;

}
?>



La idea es que según en qué rango de valores se encuentre el valor numérico que tienes, asignarás un color (yo he usado una cadena hexadecimal RGB de html en el ejemplo) a una variable para luego usarla en el css o la capa de presentación que uses.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Asunto

Avatar de Arias
* * * * * * *

(Nivel 3 - 290 posts)

#2 Offline Arias Usuario 23 jun 10
Por la impresión que me da hacen algo como:

1) Sacas el valór máximo y mínimo de las barras. El máximo, en su caso, es la última barra (130) y supongo que como mínimo tendrán el valor 0 (podría ser la barra más pequeña).

2) Estableces los colores de los extremos: max= 255,0,0; min=0,255,0
(Esto serían los colores en RGB, el primero es todo rojo y el segundo todo verde)

3) Miras el valor de cada la barra que vayas a pintar (supongamos un valor de 60) y calculas el "porcentaje" que representa del total: 60/130 ~= 0.46 (Tendría de ancho un 46% del espacio, por lo tanto el color tiene que estar a un 46% entre los colores min y max).

4) Calculas el RGB.
- Rojo: va de 0 (min) a 255 (max), el 46% es aproximadamente 118
- Verde: va de 255(min) a 0 (max), el 46% es aproximadamente 137
- Azul: va de 0 (min) a 0 (max), el 46% es exactamente 0 xD

El color de tu barra en RGB es 118, 137, 0. Si lo traduces a hexadecimal te queda 76, 89, 0 (#768900)


Es una posible implementación en la que se toma como mínimo el 0 y los colores se modifican linealmente. Si tomases como valor mínimo otra cosa que no sea 0 tendría que restarselo al valor de la barra y al valor máximo.

Un saludo.

Zas! en toda la boca...

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

php-hispano.net 2002 - 2010 | XHTML 1.0
Datos Legales | Webmaster