Недавно загруженные изображения получают сообщение об ошибке: не удалось распознать данные в файле изображения. Но старые изображения работают?

#python #image #tkinter #png

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

Вопрос:

Я хочу использовать изображения в своем графическом интерфейсе, созданные с помощью tkinter и python. Моя проблема в том, что изображения, которые я загрузил из Google во время выполнения проекта, работают и получают сообщение об ошибке: не удалось распознать данные в файле изображения. Однако старые изображения, сделанные до того, как я запустил проект, работают, и если они того же типа (.png) и в той же папке. Я пробовал с несколькими разными папками, и все они работают со старыми изображениями, но не с новыми. Это метод, который я использую:

 import tkinter as tk
from tkinter import *

win = tk.Tk()

photo=PhotoImage(file=r'C:MyFoldermyPicture.png')
photolabel=Label(win, image=photo)
photolabel.pack()

win.mainloop()
 

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

1. Как вы загружаете эти свежие изображения.

2. Я захожу в Google, щелкаю правой кнопкой мыши по изображению, сохраняю как: и помещаю его в свою папку

Ответ №1:

tkinter распознает не все форматы изображений. Самый безопасный формат для tkinter — .gif; вы можете попробовать использовать программу для редактирования изображений, чтобы повторно сохранить ваши файлы в формате .gif. Или вы можете установить модуль pillow и использовать его для загрузки изображений, поскольку он распознает гораздо больше типов изображений.

 py -m pip install pillow
 

И вы бы использовали это так:

 import tkinter as tk
from PIL import Image, ImageTk
win = tk.Tk()

photo=ImageTk.PhotoImage(Image.open(r'C:MyFoldermyPicture.png'))
photolabel=tk.Label(win, image=photo)
photolabel.pack()

win.mainloop()
 

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

1. AFAIK, более новые версии tkinter также поддерживают png.

2. @CoolCloud .png имеет несколько форм, и я не думаю, что поддерживаются все типы сжатия. Кроме того, имя .png не означает, что на самом деле это формат png, нередко люди случайно называют изображения с неправильным расширением. Большинство программ все равно игнорируют расширение, поэтому оно остается незамеченным.

3. Правда о переименовании файла png, это тоже может быть причиной.

4. Это работает! Я также пробовал этот метод с помощью PIL, но я думаю, что PIL был загружен не в ту папку, я переместил его в нужную папку и заставил его работать. Спасибо за помощь!