PhotoImage

A classe PhotoImage do módulo Tkinter, permite carregar e visualizar imagens, nos formatos .gif, .pgm ou .ppm, nos componentes Label, Button, Canvas e Text.

Carregar imagem a partir de um ficheiro

O construtor de PhotoImage abaixo permite carregar uma imagem a partir de um ficheiro.

tk.PhotoImage(file=ficheiro_imagem)

Basta fornecer ao argumento file o caminho do ficheiro da imagem ficheiro_imagem

Exemplo:

from tkinter import *

mainWindow = Tk()
frame = Frame(mainWindow, width=400, height=600, background='white')
frame.pack_propagate(0)    
frame.pack()
img = PhotoImage(file='logo.gif')

lbl = Label(parent, image=img)
lbl.pack()

Carregar imagem a partir de uma string base-64

O construtor de PhotoImage abaixo permite carregar uma imagem a partir de uma string codificada em base-64.

tk.PhotoImage(data=string_codificada_em_base64)

Basta fornecer ao argumento data uma string codificada em base-64, a partir de uma imagem.

Podemos codificar um ficheiro de uma imagem numa string codificada em base-64, usando funções do módulo base64.

Exemplo 1:

import Tkinter as tk

image_data = '''
    R0lGODlhEAAQALMAAAAAAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAA\nAAAAACH5BAEAAAIALAAAAAAQABAAQAQ3UMgpAKC4hm13uJnWgR
    TgceZJllw4pd2Xpagq0WfeYrD7\n2i5Yb+aJyVhFHAmnazE/z4tlSq0KIgA7\n
'''

mainWindow = tk.Tk()
img = tk.PhotoImage(data=image_data)
lbl = tk.Label(mainWindow, image=img, padx=10, pady=10)
lbl.pack()
mainWindow.mainloop()

Exemplo 2:

import base64
import tkinter as tk

with open("caminho/da/imagem.png", "rb") as fich_imagem:
    string_da_imagem_codificada_em_base64 = base64.b64encode(fich_imagem.read()) 


root = tk.Tk()

img = PhotoImage(data=string_da_imagem_codificada_em_base64)

tk.Label(root, image=img).pack()

root.mainloop()