如何将 MySQL blob 图像转换为 python 中的 base64 字符串?
How to convert MySQL blob image to base64 string in python?
我在云服务器中有一个 BLOB 图片,我想使用 Tkinter.Label()
显示它
在深入研究代码之前,我必须告诉 blob 文件存在于 mysql table 并且 record
本身确实存储
table 中的一行正确。 records[0][2]
代表/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwI...
这是代码片段:
global img
#Connecting Server
mydb= mysql.connector.connect(**config)
cursor = mydb.cursor(buffered=True)
#Fetching Blob Image to Record
sql_fetch_blob_query = """SELECT * from my-Table where id = %s"""
emp_id=4
cursor.execute(sql_fetch_blob_query, (emp_id,))
record = cursor.fetchall()
#Base64 Encoding
base64_encoded= base64.b64encode(record[0][2])
base64_encoded_string= base64_encoded.decode('utf-8')
#Displaying on Tkinter
root=tk.Tk()
img=tk.PhotoImage(data=base64_encoded_string)
myLabel= tk.Label(root,image=img)
myLabel.pack()
root.mainLoop()
这是我得到的错误:
_tkinter.TclError: couldn't recognize image data
在img=tk.PhotoImage(data=base64_encoded_string)
行
我尝试将该行更改为 img=tk.PhotoImage(data=record[0][2])
,但仍然出现相同的错误。
编辑:
我在编码前打印record[0][2]
,输出是:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\
已解决!
原来我存储在云服务器中的 blob 图像是 PIL.ImageTk.PhotoImage()
可以使用的。换句话说 img=PIL.ImageTk.PhotoImage(data=record[0][2])
是我需要的行!然后我在我的 tkinter GUI 上贴了一个标签 myLabel= tk.Label(root,image= img)
并将 root.mainLoop()
更改为 root.mainloop()
.
现在我可以将图像文件上传到云服务器并在我的 GUI 上随时显示它。
我在云服务器中有一个 BLOB 图片,我想使用 Tkinter.Label()
在深入研究代码之前,我必须告诉 blob 文件存在于 mysql table 并且 record
本身确实存储
table 中的一行正确。 records[0][2]
代表/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwI...
这是代码片段:
global img
#Connecting Server
mydb= mysql.connector.connect(**config)
cursor = mydb.cursor(buffered=True)
#Fetching Blob Image to Record
sql_fetch_blob_query = """SELECT * from my-Table where id = %s"""
emp_id=4
cursor.execute(sql_fetch_blob_query, (emp_id,))
record = cursor.fetchall()
#Base64 Encoding
base64_encoded= base64.b64encode(record[0][2])
base64_encoded_string= base64_encoded.decode('utf-8')
#Displaying on Tkinter
root=tk.Tk()
img=tk.PhotoImage(data=base64_encoded_string)
myLabel= tk.Label(root,image=img)
myLabel.pack()
root.mainLoop()
这是我得到的错误:
_tkinter.TclError: couldn't recognize image data
在img=tk.PhotoImage(data=base64_encoded_string)
行
我尝试将该行更改为 img=tk.PhotoImage(data=record[0][2])
,但仍然出现相同的错误。
编辑:
我在编码前打印record[0][2]
,输出是:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\
已解决!
原来我存储在云服务器中的 blob 图像是 PIL.ImageTk.PhotoImage()
可以使用的。换句话说 img=PIL.ImageTk.PhotoImage(data=record[0][2])
是我需要的行!然后我在我的 tkinter GUI 上贴了一个标签 myLabel= tk.Label(root,image= img)
并将 root.mainLoop()
更改为 root.mainloop()
.
现在我可以将图像文件上传到云服务器并在我的 GUI 上随时显示它。