programming Franchu on 10 Oct 2007 05:32 pm
Hacer un gradiente de forma fácil
Posiblemente a muchos este post les parezca una tontería supina, pero bueno, albergo la esperanza de que haya alguien que como yo no tenía ni idea de cómo enfrentarse al problema de conseguir un degradado de colores como los que salen en las barras de colores de los programas gráficos.
El problema que tenía que resolver es el siguiente. Tengo una serie de valores que tengo que mostrar en una escala de colores desde el azul (el mínimo de los valores de la serie) al rojo (el máximo de los valores de la serie).
Hacerlo en RGB se prometía complejo, pero afortunadamente encontré otro espacio de colores que me salvaba la vida. HSL (Hue, Saturation, Lightness).
En el nuevo espacio de colores puede mantener constante la luminancia y saturación y variar linealmente la tonalidad. Luego convertir a RGB es bastante fácil.
Para hacer una prueba rápida, hice un script en Python
import colorsys
l = 0.7
s = 1.0
n_max = 10for i in range(1,n_max):
(r,g,b) = colorsys.hls_to_rgb(0.68*(1-i/float(n_max)), l, s)
r = int(r * 255)
g = int(g * 255)
b = int(b * 255)
print “<font color=’%x%x%x’>texto<br/></font>”%(r,g,b)
Y el resultado es:
<font color=’6598ff’>texto<br/></font>
<font color=’65d6ff’>texto<br/></font>
<font color=’65ffe8′>texto<br/></font>
<font color=’65ffaa’>texto<br/></font>
<font color=’65ff6c’>texto<br/></font>
<font color=’9eff65′>texto<br/></font>
<font color=’dcff65′>texto<br/></font>
<font color=’ffe265′>texto<br/></font>
<font color=’ffa465′>texto<br/></font>
Sencillo, rápido, bonito
Si alguno tiene alguna otra idea mágica de cómo hacerlo, también se agradece que nos ilumine con sus conocimientos.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
on 10 Oct 2007 at 17:54 1.Daedalvs said …
Joder, pues chupao:
Si la función es derivable, el gradiente resulta de aplicar el operador nabla a dicha función.
Vale, ya me callo
Pero juro por Dios que cuando he visto la entrada en twitter he pensado en análisis numérico.
Un saludo.
Jokin
on 11 Oct 2007 at 15:00 2.Franchu said …
No tengo palabras…
Bueno, pensandolo mejor si… ¡Estás enfermo!