无法将base64编码的图形转换为画布背景

时间:2014-11-23 15:33:53

标签: python python-3.x tkinter

我想将base64中的字符串解码为我的画布背景的图像。我知道我可以使用以下代码创建一个空图像文件并写入:

fh = open("background.png", "wb")
fh.write(base64.b64decode(background_image.background_image))
fh.close()

但我希望将图像直接插入到画布背景中,而无需创建任何额外的文件,如下所示:

background_image = base64.b64decode(background_image.background_image)
background_image = ImageTk.PhotoImage(file=background_image)
canvas.create_image(0, 0, image=background_image, anchor=NW)

但是我收到以下错误。

AtrributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'

1 个答案:

答案 0 :(得分:1)

如果你在内存中使用数据而不是文件,那么它应该是 数据= background_image

try:
    import Tkinter as tk     ## Python 2.x
except ImportError:
    import tkinter as tk     ## Python 3.x


grape_gif='''\
R0lGODlhIAAgALMAAAAAAAAAgHCAkC6LV76+vvXeswD/ANzc3DLNMubm+v/6zS9PT6Ai8P8A////
/////yH5BAEAAAkALAAAAAAgACAAAAS00MlJq7046803AF3ofAYYfh8GIEvpoUZcmtOKAO5rLMva
0rYVKqX5IEq3XDAZo1GGiOhw5rtJc09cVGo7orYwYtYo3d4+DBxJWuSCAQ30+vNTGcxnOIARj3eT
YhJDQ3woDGl7foNiKBV7aYeEkHEignKFkk4ciYaImJqbkZ+PjZUjaJOElKanqJyRrJyZgSKkokOs
NYa2q7mcirC5I5FofsK6hcHHgsSgx4a9yzXK0rrV19gRADs=
'''
master=tk.Tk()
master.geometry("100x100")
photo=tk.PhotoImage(data=grape_gif)

canvas=tk.Canvas(master)
canvas.grid()
canvas.create_image(0, 0, image=photo, anchor="nw")

master.mainloop()