Отобразить BLOB MySQL на форме Tkinter

Я хочу получить изображение из базы данных и отобразить его на форме. Перепробовала разные варианты, но не получается. Вот мой последний вариант кода

curs.execute('call show_img(%s)', name) #sql запрос
photo = curs.fetchone()
print(photo["img"])
image = Image.open(io.BytesIO(photo["img"]))

render = ImageTk.PhotoImage(image)
img = Label(image=render)
img.place(x=0, y=0)

в результате в photo хранится вот такое значение

{'img': b'/Users/leylanyssanbayeva/Documents/images/\xd0\xb4\xd0\xb6\xd0\xb5\xd0\xb8\xcc\x86\xd1\x80\xd0\xb0\xd0\xbd.jpeg'}

именно в этом варианте кода получаю вот такую ошибку

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py", line 1892, in __call__
    return self.func(*args)
  File "/Users/leylanyssanbayeva/Documents/redbook/main.py", line 248, in <lambda>
    f3b1 = Button(f3, text='Поиск', font="Arial 15", command=lambda: search_animal(ent_f3.get()))
  File "/Users/leylanyssanbayeva/Documents/redbook/main.py", line 225, in search_animal
    image = Image.open(io.BytesIO(photo["img"]))
  File "/Users/leylanyssanbayeva/Documents/redbook/venv/lib/python3.9/site-packages/PIL/Image.py", line 3030, in open
    raise UnidentifiedImageError(
PIL.UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7feab8073d60>

буду очень благодарна, впервые работаю по учебе с этой библиотекой


Ответы (2 шт):

Автор решения: GrAnd

Просто декодируйте имя файла из bytes в string.

image_file_name = photo["img"].decode()
image = Image.open(image_file_name)
→ Ссылка
Автор решения: Leyla Nyssanbayeva

Моя ошибка была в том, что я пробовала использовать decode(), но делала это неправильно. Следующей проблемой было то, что вместо изображения отображался белый прямоугольник. Как оказалось, это из за того, что я писала все это в функции. Как решение нужно всего лишь использовать mainloop() для lable. Код:

curs.execute('call show_img(%s)', name)  # sql запрос
                    photo = curs.fetchone()
                    #print(photo["img"].decode())
                    img = photo["img"].decode()
                    image = ImageTk.PhotoImage(file=img)
                    image_sprite = Label(f3, image=image)
                    image_sprite.place(x=450, y=180, width=320, height=250)
                    image_sprite.mainloop()
→ Ссылка