WedX - журнал о программировании и компьютерных науках

Изображение не отображается на питоне

Я новичок в программировании на питоне. Я буду размещать изображения на рамке. но изображение не отображало ошибку, показанную ниже. Traceback (последний последний вызов):

  File "C:/Users/kobinath/PycharmProjects/pythonProject4/jj.py", line 5, in <module>
    img = PhotoImage(file="pic.jpg")
  File "C:\Users\kobinath\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 4061, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Users\kobinath\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 4006, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "pic.jpg"

то, что я пробовал до сих пор, я прикрепил ниже.

from tkinter import *      
root = Tk()      
canvas = Canvas(root, width = 600, height = 600)
canvas.pack()      
img = PhotoImage(file="pic.jpg")
canvas.create_image(20,20, anchor=NW, image=img)      
root.mainloop()
28.08.2020

  • Изображение правильно отформатировано? Вроде правильно конвертировал в jpg? 28.08.2020
  • да сэр. ....................... 28.08.2020
  • Я думаю, проблема может заключаться в том, что только gif файлы поддерживаются PhotoImage (кажется, я где-то это читал), поэтому либо попробуйте преобразовать это в gif, либо используйте модуль PIL. 28.08.2020
  • сэр, вы можете написать код для меня, как добавить изображение в рамку, пожалуйста 28.08.2020
  • Пожалуйста, выполните поиск на этом сайте. Есть много вопросов о показе jpg-изображений в tkinter. 28.08.2020

Ответы:


1

Я действительно думаю, что невозможно использовать jpg с PhotoImage напрямую, вместо этого вы можете использовать PIL, и вот как,

pip install PIL

После этого просто скажи

from tkinter import *  
from PIL import Image,ImageTk
    
root = Tk()      
canvas = Canvas(root, width = 600, height = 600)
canvas.pack()   
   
img_file = Image.open("sad songs.jpg")
img_file = img_file.resize((150,150)) #(width,height)
img = ImageTk.PhotoImage(img_file)
canvas.create_image(20,20, anchor=NW, image=img)
      
root.mainloop()

Вот сайт для преобразования jpg в gif

Дайте мне знать, если есть какие-либо ошибки или сомнения

Ваше здоровье

28.08.2020
  • господи как сделать кликабельную картинку 29.08.2020
  • Задайте новый вопрос и дайте ссылку на него здесь, я помогу: D 29.08.2020
  • stackoverflow.com/questions/63644137 / 29.08.2020

  • 2

    Это может быть результатом новой ошибки, которая происходит с изображениями tkinter, когда мы должны сохранить ссылку на изображение, чтобы убедиться, что оно будет работать, я надеюсь, что это исправит.

    canvas.img = img
    

    Кроме того, как отметил @Cool Cloud, это также может быть проблемой, когда он иногда не работает с файлами jpg, но для меня иногда это тоже работает, поэтому, если он не работает с вами, вы можете просто преобразовать его в png или gif (Я бы предпочел png, основываясь на том, что сработало со мной, когда я столкнулся с этими проблемами). Также вместо преобразования вы можете попробовать библиотеку PIL, которую можно установить с помощью

    pip install PIL
    

    И затем вы можете использовать класс PhotoImage (да, он имеет то же имя, что и класс tkinter) для загрузки изображений и прочего, который находится в модуле ImageTk, который можно использовать для работы с изображениями tkinter.

    Также вы можете передать объект изображения в этот класс в качестве параметра, вы можете создать объект изображения следующим образом:

    img_obj = Image.open('annoying_image.jpg') # uses the Image module from PIL use import PIL.Image
    

    Вот так

    img = PIL.ImageTk.PhotoImage(img_obj) # uses the Image module from PIL use import PIL.ImageTk
    

    Кроме того, если вы хотите узнать больше о PIL, это просто библиотека обработки изображений Python, которую также часто называют подушкой.

    ЗАЯВЛЕНИЯ ОБ ИМПОРТЕ (НА СЛУЧАЙ, ЧТОБЫ ЭТО НЕ ЯСНО)

    from PIL import Image, ImageTk
    
    28.08.2020
  • Это не новая ошибка. Так tkinter работал много лет. Проблема просто в том, что tkinter напрямую не поддерживает jpg. 28.08.2020
  • @CoolCloud: в последних версиях tkinter да. 28.08.2020
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]