1. ホーム
  2. python

[解決済み] Tkinterのエラーです。画像ファイルのデータを認識できませんでした

2022-01-30 10:06:25

質問内容

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が出来上がりました。

として、この画像を bll.jpg :

(imgurが変換して bll.png が、これは私にも有効です)。


オプションを増やす

  • この回答 について説明すると、tkinter は gif の画像が表示されます。を使用してみてください。 .gif 画像を表示します。
  • これがうまくいかない場合は PIL で述べたように この回答 .

更新しました。 で解決 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()