Eu quero codificar uma imagem em uma string usando o módulo base64. Eu já tive um problema. Como faço para especificar a imagem que quero ser codificada? Tentei usar o diretório para a imagem, mas isso simplesmente leva à codificação do diretório. Quero que o arquivo de imagem real seja codificado.
EDITAR
Eu tentei este trecho:
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))
mas eu recebo o seguinte erro:
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
O que estou fazendo de errado?
base64.b64encode(fh.read()).decode()
para obter uma string para ser usada em arquivos html.Com o python 2.x, você pode codificar trivialmente usando .encode:
fonte
A primeira resposta imprimirá uma string com o prefixo b '. Isso significa que sua string será assim b'your_string 'Para resolver esse problema, adicione a seguinte linha de código.
fonte
:-)
)Como eu disse na sua pergunta anterior, não há necessidade de codificar base64 a string, isso apenas tornará o programa mais lento. Basta usar o repr
Agora a imagem é armazenada como uma variável chamada
image_data
em um arquivo chamadoimage.py
Iniciar um novo intérprete e importe os dados da imagemfonte
Tomando emprestado o que Ivo van der Wijk e o gnibbler desenvolveram anteriormente, essa é uma solução dinâmica
Você pode então decidir compilar o arquivo de imagem de saída com o Cython para torná-lo legal. Com esse método, você pode agrupar todos os seus gráficos em um módulo.
fonte
fonte