2014-11-23 43 views
0

我想將base64中的字符串解碼爲我的畫布背景的圖像。我知道我可以創建一個空的圖像文件,並使用此代碼寫它:無法將base 64 enocded圖形轉換爲畫布背景

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

但我要直接插入圖片到畫布背景wihout產生任何額外的文件,像這樣:

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

如果您使用的內存中的數據,而不是一個文件,那麼它應該是 數據= 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()