Error Tkinter: no se pudieron reconocer los datos en el archivo de imagen

Estoy tratando de poner una imagen jpg en un canvas tkinter. tkinter me da este error:

no pudo reconocer los datos en el archivo de imagen

Uso el código de la documentación:

canv = Canvas(root, width=80, height=80, bg='white') canv.grid(row=2, column=3) img = PhotoImage(file="bll.jpg") canv.create_image(20,20, anchor=NW, image=img) 

Lo mismo con imágenes png. Incluso trató de poner una imagen en un widget de etiqueta, pero obtuvo el mismo error. Que pasa

Estoy usando Python 3 en Mac. El archivo y la imagen de Python están en la misma carpeta.

Tu código parece correcto, esto se ejecuta para mí en Windows 7 (Python 3.6):

 from tkinter import * root = Tk() canv = Canvas(root, width=80, height=80, bg='white') canv.grid(row=2, column=3) img = PhotoImage(file="bll.jpg") canv.create_image(20,20, anchor=NW, image=img) mainloop() 

resultando en este tkinter GUI:

GUI con esta imagen como bll.jpg : imagen

(imgur lo convirtió a bll.png pero esto también funciona para mí).


Mas opciones:

  • Esta respuesta menciona que tkinter está trabajando solo con imágenes gif . Intente usar una imagen .gif .
  • Si esto no funciona, use PIL como se indica en esta respuesta .

Actualización: Solución con PIL :

 from tkinter import * from PIL import ImageTk, Image root = Tk() canv = Canvas(root, width=80, height=80, bg='white') canv.grid(row=2, column=3) img = ImageTk.PhotoImage(Image.open("bll.jpg")) # PIL solution canv.create_image(20, 20, anchor=NW, image=img) mainloop() 

Estaba recibiendo el mismo problema. Tengo ventanas y Python 3.6. Así que encontré dos soluciones para esto: o usas / conviertes a imagen .png (con la misma función que has usado):

 photo = PhotoImage('xyz.png') l = Label(image = photo) l.pack() 

o si desea leer solo el archivo .jpg , use la biblioteca PIL para leer y mostrar una imagen como esta:

 from PIL import ImageTk, Image img = ImageTk.PhotoImage(Image.open("xyz.jpg")) l=Label(image=img) l.pack()