Python 3.7, tkinter, jpg: не удалось распознать данные в файле изображения - PullRequest
0 голосов
/ 04 декабря 2018

Я хотел попросить некоторую помощь относительно tkinter, в python3.Я не могу отобразить файл изображения в формате JPEG в метке, используя следующий код:

def changephoto(self):
    self.tmpimgpath = filedialog.askopenfilename(initialdir=os.getcwd())
    self.installimagepath.set(self.tmpimgpath)
    self.selectedpicture = PhotoImage(file=self.installimagepath.get())
    self.PictureLabel.configure(image=self.selectedpicture)

Это может сделать изображения PNG просто отлично, но когда я пытаюсь загрузить изображение JPG, все, что яв состоянии получить следующее сообщение об ошибке:

_tkinter.TclError: couldn't recognize data in image file

Я прошел через все похожие вопросы, которые смог найти, но все они, кажется, отвечают на одно и то же: «из PIL import ImageTk, Image» Когда я пытаюсь это сделать (на данный момент, я пытаюсь использовать подушку, кстати), ImageTk, кажется, не доступен.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Решение, предоставленное Чаком Г., сработало.Я не могу сказать, почему я изначально не мог импортировать ImageTk, но это оказалось просто работать.

from PIL import ImageTk
0 голосов
/ 04 декабря 2018
  1. Вам необходимо установить PIL: pip install pillow.

    Если pip не удалось успешно установить pillow, вам, возможно, придется попробовать pip3 или pip3.7 (используйте bash, чтобы увидеть, какие опции у вас есть)

  2. Вы можете открыть свое изображение с помощью ImageTk:

    import os
    import tkinter as tk
    from tkinter import filedialog
    from PIL import ImageTk
    
    def changephoto():
       root = tk.Tk()
       PictureLabel= tk.Label(root)
       PictureLabel.pack()
       tmpimgpath = filedialog.askopenfilename(initialdir=os.getcwd())
       selectedpicture= ImageTk.PhotoImage(file=tmpimgpath)
       PictureLabel.configure(image=selectedpicture)
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...