Ошибка Tkinter: не удалось распознать данные в файле изображения

78
10

Я пытаюсь поместить изображение jpg в холст tkinter. tkinter дает мне эту ошибку:

не удалось распознать данные в файле изображения

Я использую код из документации:

canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)

img = PhotoImage(file="bll.jpg")
canv.create_image(20,20, anchor=NW, image=img)

То же самое с png-изображениями. Даже попытался поместить изображение в виджет метки, но получил ту же ошибку. Что не так?

Я использую Python 3 на Mac. Файл и изображение Python находятся в одной папке.

спросил(а) 2021-01-25T15:12:34+03:00 4 месяца, 4 недели назад
1
Решение
63

Ваш код кажется правильным, это работает для меня в Windows 7 (Python 3.6):

from tkinter import *
root = Tk()

canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)

img = PhotoImage(file="bll.jpg")
canv.create_image(20,20, anchor=NW, image=img)

mainloop()

в результате чего этот графический интерфейс tkinter:

GUI с этим изображением как bll.jpg: image

(imgur преобразовал его в bll.png но это работает и для меня.)

Больше вариантов:

    В этом ответе упоминается, что tkinter работает только с изображениями gif. Попробуйте использовать изображение .gif. Если это не работает, используйте PIL как указано в этом ответе.

Обновление: Решение с PIL:

from tkinter import *
from PIL import ImageTk, Image
root = Tk()

canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)

img = ImageTk.PhotoImage(Image.open("bll.jpg")) # PIL solution
canv.create_image(20, 20, anchor=NW, image=img)

mainloop()

ответил(а) 2021-01-25T15:12:34+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема