Фотоизображение Tkinter не будет отображаться

#python #image #tkinter #urllib

#python #изображение #tkinter #urllib

Вопрос:

Я пытаюсь использовать изображение с этой веб-страницы и отобразить его в ярлыке Tkinter. Однако всякий раз, когда я пытаюсь это сделать, создается метка, но изображение остается пустым. Это работает, когда я использую URL, который заканчивается на .jpg (http://i.imgur.com/CC8zIPr.jpg например). Есть ли способ заставить первую ссылку работать правильно? Это соответствующая часть моего кода:

 url = "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=414495amp;type=card"
u = urlopen(url)
raw_data = u.read()
im = Image.open(io.BytesIO(raw_data))
image = ImageTk.PhotoImage(im)
label = tk.Label(image=image)
label.image = image
label.pack()
  

Комментарии:

1. Какой тип файла вы используете? ImageTk может открывать только файлы .jpg и .gif. Если вы хотите использовать файл другого типа, используйте библиотеку изображений Python (PIL)

2. Когда я щелкаю правой кнопкой мыши и нажимаю сохранить как на изображении, по умолчанию используется jpeg, поэтому я предположил, что urlopen также выводит их в формате jpeg. Хотя я могу ошибаться.

3. Это должно быть, но просто в том случае, если вы должны попробовать использовать модуль PIL.

4. Первые четыре байта данных, которые вы читаете, указывают, что это файл png.

5. В таком случае, как мне преобразовать png в jpg? Я не могу найти способ сделать это с помощью PIL без сохранения файла на диске.