从Mysql数据库中检索和显示BLOB图片使用Tkinter

0 投票
1 回答
3677 浏览
提问于 2025-04-17 07:20

这个函数应该连接到一个数据库,如果参数正确的话,就能获取到一个BLOB格式的图片。不过我现在有点困惑,不知道怎么把这个图片显示出来。目前,它会显示其他所有信息,但就是不显示我想要的这个BLOB图片。我意识到把它设置为字符串变量是不对的。有没有人能帮我理清一下,怎么才能在Tkinter中显示这个图片?如果不行,还有没有其他的解决办法?

func = Tkinter.Toplevel()
func.title("blah")
func.geometry('400x400+0+0)

db = MySQLdb.connect(host='xxx.xxx.xxx.xxx', user='xxx',passwd='xxxx',db='xxxxx')
cursor = db.cursor()

FirstName = QE1.get()
LastName = QE2.get()
SSN = QE3.get()

cursor execute ("""SELECT pat_face FROM PATIENT WHERE pat_firstname=%s AND pat_lastname=%s AND pat_id=%s""",(FirstName,LastName,SSN))

PATFACEresults = StringVar()
PATFACEresults.set(cursor.fetchone())

db.close()

PATFACE = Tkinter.Label(func, textvariable=PATFACEresults).grid(row=0,column=1)

1 个回答

0

我觉得你可能需要用到PIL这个库(还有可能需要StringIO)。

可以试试这样的代码:

from PIL import Image, ImageTk
import cStringIO

...

results = cursor.fetchone()
data = cStringIO.StringIO(results.tostring())
pic = ImageTk.PhotoImage(Image.open(data))

patface = Tkinter.Label(func, image=pic)
patface.grid(row=0, column=1)

你也可以直接把图片保存到一个文件里,然后再从那个文件加载。

更多信息可以参考:

撰写回答