python - guia - qgis español
Conversión de valor hexadecimal a RGB en Python (3)
Trabajando con la respuesta de Jeremy aquí: Convirtiendo el color hexadecimal a RGB y viceversa , pude obtener un programa de Python para convertir códigos hexadecimales de color preestablecidos (ejemplo # B4FBB8), sin embargo, desde la perspectiva del usuario final, no podemos pedir a la gente que edite codificar y ejecutar desde allí. ¿Cómo se puede pedir al usuario que ingrese un valor hexadecimal y luego hacer que salte un valor RGB desde allí?
Aquí está el código que tengo hasta ahora:
def hex_to_rgb(value):
value = value.lstrip(''#'')
lv = len(value)
return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
def rgb_to_hex(rgb):
return ''#%02x%02x%02x'' % rgb
hex_to_rgb("#ffffff") # ==> (255, 255, 255)
hex_to_rgb("#ffffffffffff") # ==> (65535, 65535, 65535)
rgb_to_hex((255, 255, 255)) # ==> ''#ffffff''
rgb_to_hex((65535, 65535, 65535)) # ==> ''#ffffffffffff''
print(''Please enter your colour hex'')
hex == input("")
print(''Calculating...'')
print(hex_to_rgb(hex()))
Usando la línea de print(hex_to_rgb(''#B4FBB8''))
puedo hacer que salte el valor RGB correcto que es (180, 251, 184)
Probablemente sea super simple, todavía soy bastante rudo con Python.
¡Hay dos pequeños errores aquí!
hex == input("")
Debiera ser:
user_hex = input("")
Desea asignar la salida de input()
a hex
, no verificar la comparación. Además, como se menciona en los comentarios (@koukouviou), no sobrescribas el hex
, en lugar de eso, user_hex
algo como user_hex
.
También:
print(hex_to_rgb(hex()))
Debiera ser:
print(hex_to_rgb(user_hex))
Desea utilizar el valor de hex, no el método que se puede __call__
del tipo ( __call__
).
Creo que esto hace lo que buscas:
h = input(''Enter hex: '').lstrip(''#'')
print(''RGB ='', tuple(int(h[i:i+2], 16) for i in (0, 2 ,4)))
(Lo anterior fue escrito para Python 3)
Ejecución de la muestra:
Enter hex: #B4FBB8
RGB = (180, 251, 184)
Escribiendo en un archivo
Para escribir en un archivo con el identificador de fhandle
mientras conserva el formato:
fhandle.write(''RGB = {}''.format( tuple(int(h[i:i+2], 16) for i in (0, 2 ,4)) ))
Una opción perezosa: el paquete webcolors tiene una función hex_to_rgb
.