PROGRAM PYTHON

Pythonスクリプト【filedialogからファイルを選択して画像を表示しよう②】

 

 

メニューバーからfiledialogを呼び出して画像を表示しよう

今回はtkinterのfiledialogをメニューバーから呼び出して、キャンバスに画像を表示してみましょう。
前回は表示する画像サイズは固定でしたが、今回はキャンバスに収まるようにサイズの大きな画像は縮小して表示します。
また、PNG形式のファイルだけでなく、JPEG形式のファイルも表示するために、画像表示ライブラリーとしてPILの後継であるPillowを使います。
メニューバーの使い方やJPEG画像の表示に関しては、以下の記事を参照してください。

 

画像の比率を維持したままサイズを縮小する

画像サイズの縮小は、ImageOpsモジュールのImageOps.pad()メソッドを使います。
ImageOps.pad()メソッドは、画像の縦横比を維持したまま、画像サイズの縮小拡大ができます。

 

PILライブラリーのインポート

ImageOpsモジュールを使うには、PILライブラリーをインポートします。
以下のように、必要なライブラリーのみをインポートするのが一般的です。

from PIL import Image,ImageTk,ImageOps

 

ImageOps.padの使い方

ImageOps.pad()メソッドの使い方は、以下の通りです。

ImageOps.pad(画像オブジェクト, サイズ [, method=3, color=None, centering=(0.5,0.5)])

オプション 内容
画像オブジェクト ImageOpen()メソッドでオープンした画像オブジェクト
サイズ 幅と高さをピクセル単位で指定したタプル
例:(640,400)
method リサンプリング方法
以下の定数や0~5が指定可能。デフォルトはBICUBIC(3)
0 NEAREST/NONE
1 LANCZOS/ANTIALIAS
2 BILINEAR/LINEAR
3 BICUBIC/CUBIC
4 BOX
5 HAMMING
※ 定数を使う場合は、Image.BICUBICのように先頭にImageを付ける
詳しくは、公式サイトを参照
color 画像の背景色。デフォルトは黒(black/#000000)
カラー名や先頭に#(シャープ)を付けた16進数が指定可能
centering 画像の位置。デフォルトは(0.5,0.5)で中央に配置
(0,0)は左上、(1,1)は右下に配置

ImageOpsモジュールには、他にも様々なメソッドがあります。
詳しいImageOpsモジュールの使い方や各メソッドのオプションの内容は、以下の公式サイトを参照してください。

 

メニューバーからfiledialogを呼び出して画像を表示するプログラム

メニューバーからfiledialogを呼び出して画像を表示するプログラムは、以下のようになります。

親ウィンドウのメニューバーから「開く」を選択します。
「閉じる」を選択すると、表示されている画像をクリアすることができます。

tkfileopen2-1

表示する画像ファイルを選択します。
PNG形式とJPEG形式の画像ファイルを選択することができます。

tkfileopen2-2

サイズの大きなファイルを選択すると、画像が縮小されて表示されます。

tkfileopen2-3

 

-PROGRAM, PYTHON
-,