Похоже, что вопрос, с которым вы связались, использует класс tkinter.PhotoImage
, который имеет интерфейс, отличный от класса PIL.ImageTk.PhotoImage
, который используется в вашем коде.Последний принимает обычный bytes
объект.Вам не нужно сначала кодировать в base64.
import base64
with open("IMAGE.png", "rb") as image_file:
image_data = image_file.read()
import tkinter as tk
from PIL import ImageTk, Image
root = tk.Tk()
im = ImageTk.PhotoImage(data=image_data)
tk.Label(root, image=im).pack()
root.mainloop()
В качестве альтернативы, продолжайте кодировать base64 ваши данные, но используйте tkinter.PhotoImage
.
import base64
with open("IMAGE.png", "rb") as image_file:
image_data_base64_encoded_string = base64.b64encode(image_file.read())
import tkinter as tk
from PIL import Image
root = tk.Tk()
im = tk.PhotoImage(data=image_data_base64_encoded_string)
tk.Label(root, image=im).pack()
root.mainloop()