Quiero codificar una imagen en una cadena usando el módulo base64. Sin embargo, me he encontrado con un problema. ¿Cómo especifico la imagen que quiero codificar? Intenté usar el directorio para la imagen, pero eso simplemente conduce a que el directorio se codifique. Quiero que el archivo de imagen real esté codificado.
EDITAR
Probé este fragmento:
with open("C:\Python26\seriph1.BMP", "rb") as f:
data12 = f.read()
UU = data12.encode("base64")
UUU = base64.b64decode(UU)
print UUU
self.image = ImageTk.PhotoImage(Image.open(UUU))
pero me sale el siguiente error:
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "C:\Python26\GUI1.2.9.py", line 473, in <module>
app = simpleapp_tk(None)
File "C:\Python26\GUI1.2.9.py", line 14, in __init__
self.initialize()
File "C:\Python26\GUI1.2.9.py", line 431, in initialize
self.image = ImageTk.PhotoImage(Image.open(UUU))
File "C:\Python26\lib\site-packages\PIL\Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
TypeError: file() argument 1 must be encoded string without NULL bytes, not str
¿Qué estoy haciendo mal?
base64.b64encode(fh.read()).decode()
para obtener una cadena para usar en archivos html.Con python 2.x, puede codificar trivialmente usando .encode:
fuente
La primera respuesta imprimirá una cadena con el prefijo b '. Eso significa que su cadena será así b'your_string 'Para resolver este problema, agregue la siguiente línea de código.
fuente
:-)
)Como dije en su pregunta anterior, no hay necesidad de codificar en base64 la cadena, solo hará que el programa sea más lento. Solo usa la repr
Ahora la imagen se almacena como una variable llamada
image_data
en un archivo llamadoimage.py
Iniciar un nuevo intérprete e importar el image_datafuente
Tomando en cuenta lo que Ivo van der Wijk y gnibbler han desarrollado anteriormente, esta es una solución dinámica
Luego puede decidir compilar el archivo de imagen de salida con Cython para que sea genial. Con este método, puede agrupar todos sus gráficos en un módulo.
fuente
fuente