Software > WeeWX
Ayuda para modificar imagenes de graficas
jmviper:
Sí sí.... los que usamos weewx generalmente usamos la versión más actual *+* *+*
La mía también es la 4.5.1, la que te va a instalar de su repositorio sudo apt update && apt upgrade
Como dije en mi anterior respuesta ese código vale solo para el formato que empieza por 0x ya que el hexadecimal que empieza por # no está el código preparado porque no lleva las dos últimas cifras hexadecimales del canal alfa.
De todas formas cuando se pone un hexadecimal en el skin se tiene que poner siempre entre comillas (o dobles o simples) al igual que un nombre de color literal así que tenemos que poner "#ff0000" o "red" para el color rojo o tira esa ristra de errores.
Ya dije que espera colores en formato RGBA al haber sido modificada la función en genplot.py de RGB a RGBA
He modificado código de utilities.py para quedar la función así:
--- Código: ---def tobgr(x):
"""Convert a color to little-endian integer. The PIL wants either
a little-endian integer (0xBBGGRR) or a string (#RRGGBB). weewx expects
little-endian integer. Accept any standard color format that is known
by ImageColor for example #RGB, #RRGGBB, hslHSL as well as standard color
names from X11 and CSS3. See ImageColor for complete set of colors.
"""
if isinstance(x, six.string_types):
if x.startswith('0x'):
if (len(x) == 8):
x = x.split('x')
x = '0xff' + x[1]
return int(x, 0)
try:
if x.startswith('#'):
if (len(x) == 7):
x = x + "ff"
r, g, b, a = ImageColor.getrgb(x)
return r + g * 256 + b * 256 * 256 + a * 256 * 256 * 256
except ValueError:
try:
return int(x)
except ValueError:
raise ValueError("Unknown color specifier: '%s'. "
"Colors must be specified as 0xBBGGRR, #RRGGBB, or standard color names." % x)
return x
--- Fin del código ---
Ahora detectará también el formato hexadecimal y le pondrá ff al final si no lleva los 8 dígitos del canal alfa, por ejemplo #ff0000 lo convertirá a #ff0000ff por lo que ya puedes añadirle el canal alfa directamente en el skin en hexadecimal.
Lo que no va a funcionar (no dibujará el color) es si lo ponemos con el nombre literal.... así con "red" no dibujará el rojo, tendremos que poner o 0x0000ff ó "#ff0000" ya que como digo espera el color en formato rgba.
--- Cita de: chve en 09 de Junio de 2021, 00:55:10 ---
Creo que seria cuestión de comentarlo en el soporte oficial. Independientemente que sea un posible error no entiendo como se limita esa opción para los colores de las graficas.
--- Fin de la cita ---
Seguro, sería lo mejor, como ves es modificar algo de código en alguna función. De todas formas si modificas esos archivos que he puesto al actualizar weewx lo más probable es que te los sobrescriba, así que pon una copia de ambos donde quieras y si sale actualización los vuelves a poner, pero siempre está el riesgo de que traigan funciones nuevas o modificadas y le pongamos el antiguo por lo que puede dar algún error.... por suerte ni el código de esos archivos ni weewx se actualizan muy a menudo.
Lo mejor es que vinieran ya modificados para aceptar el canal alfa en la futura actualización... alguien tendrá que decírselo ;)
saludos
jmviper:
Bueno como en programación todo es posible y no hay dos sin tres he modificado la función para que acepte también los literales así que aceptará "red", "black", "blue" o el que le pongamos, eso sí saldrá con el canal alfa opaco.
Nuevo adjunto.
chve:
Gracias jmviper. apla3
No había probado de meter los hexadecimales entrecomillados. :;
Gracias por tus aportaciones.
Ya he comentado el tema en el grupo oficial de Weewx. A ver que dicen. ;)
jmviper:
Perfecto :)
Navegación
[*] Página Anterior
Ir a la versión completa