Evan Clark
Evan Clark

Reputation: 159

Tkinter and PIL not loading jpegs

I'm trying to allow my Tkinter program to load and display .jpgs files from the standard .gif

import Image,ImageTk
root = Tk()
PILFile = Image.open("Image.jpg")
Image = PhotoImage(file=PILFile)
ImageLabel = Label(root,image=Image)
ImageLabel.image = Image
ImageLabel.pack()
root.mainloop()

The error message I get follows:

Traceback (most recent call last):
  File "/home/paragon/Programs/Python/Web/MP3Tagger.py", line 25, in <module>
albumart = PhotoImage(file=PILfile)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3271, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3227, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
 _tkinter.TclError: couldn't open "<JpegImagePlugin.JpegImageFile image mode=RGB size=1500x1500 at 0x98AEFCC>": no such file or directory
 [Finished in 0.4s with exit code 1]

I am absouletly certain that the file exists in the correct format,what could I be doing wrong?

Upvotes: 3

Views: 4116

Answers (2)

falsetru
falsetru

Reputation: 369034

According to The Tkinter PhotoImage Class:

The PhotoImage class can read GIF and PGM/PPM images from files:

.... If you need to work with other file formats, the Python Imaging Library (PIL) contains classes that lets you load images in over 30 formats, and convert them to Tkinter-compatible image objects:

from PIL import Image, ImageTk

image = Image.open("lenna.jpg")
photo = ImageTk.PhotoImage(image)

-> Replace Tkinter.PhotoImage with ImageTk.PhotoImage:

root = Tk()
PILFile = Image.open("Image.jpg")
Image = ImageTk.PhotoImage(PILFile) # <---
ImageLabel = Label(root, image=Image)
ImageLabel.image = Image
ImageLabel.pack()
root.mainloop()

Upvotes: 6

Rushy Panchal
Rushy Panchal

Reputation: 17532

Your error occurs because of the argument file:

Image = PhotoImage(file=PILFile)

This would specify a file path. In addition, you want ImageTk.PhotoImage. Instead, you want:

Image = ImageTk.PhotoImage(PILFile)

Upvotes: 1

Related Questions