tkinterでJPEGを表示するPythonプログラム

tkinterを使ってJPEGファイルを表示するPythonプログラムを書いてみたいと思います。

■disp_jpeg.py

import sys, math
import tkinter
from PIL import Image, ImageTk

# 先にメインウィンドウを作っておかないとImageTk.PhotoImage()がエラーになる
root = tkinter.Tk()

# 画像ファイルのオープンと画像サイズの取得
jpg = Image.open(sys.argv[1])
tk_img = ImageTk.PhotoImage(jpg)
width, height = jpg.size

# メインウィンドウのタイトルと大きさを設定する
root.title('JPEGファイルを表示する')
root.geometry('%dx%d' % (width, height))

# 画像表示エリアの作成と画像表示
canvas = tkinter.Canvas(root, width=width, height=height)
canvas.pack()
canvas.create_image(math.floor(width / 2), math.floor(height / 2), image=tk_img)
# ※画像の縦・横ドット数が偶数の時は、単純に1/2すると中心から1ドットずれるので、
# 補正している。

root.mainloop()

[実行]

$ python disp_jpeg sample.jpg