Jpgイメージをtkinterキャンバスに配置しようとしています。 tkinterは私にこのエラーを与えます:
画像ファイルのデータを認識できませんでした
私はドキュメントのコードを使用します:
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)
PNG画像でも同じことが言えます。画像をラベルウィジェットに入れようとしましたが、同じエラーが発生しました。どうしましたか?
MacでPython 3を使用しています。 Pythonファイルと画像は同じフォルダーにあります。
あなたのコードは正しいようです、これは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()
このtkinter GUIになります:
(imgurはbll.png
に変換しましたが、これは私にとっても機能しています。)
より多くのオプション:
更新: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()
私は同じ問題を抱えていました。私はウィンドウがあり、Python 3.6。だから私はあなたが.png
画像に使用/変換するための2つの解決策を見つけました(あなたが使用したのと同じ関数で):
photo = PhotoImage('xyz.png')
l = Label(image = photo)
l.pack()
または、.jpg
ファイルのみを読み取りたい場合は、PILライブラリを使用して次のような画像を読み取り、表示します。
from PIL import ImageTk, Image
img = ImageTk.PhotoImage(Image.open("xyz.jpg"))
l=Label(image=img)
l.pack()
PIL/Pillowのインストール:
pip install Pillow
または:
Sudo pip install pillow
from PIL import Image
from PIL import ImageTk
import tkinter
image = Image.open('bll.jpg')
image = image.resize((20, 20))
image = ImageTk.PhotoImage(image)
canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)
img = PhotoImage(file=image)
また、Tkinterでは.JPGではなく.PNGを使用することをお勧めします。