A1.9 イメージ

◀ A1.8 登録マウスカーソル   【目  次】  A1.10 geometry 文字列 ▶

999999

 更新日:


 このホームページは Amazon Kindle 本の作成中の草稿です。日々、原稿を見直しているので、内容が変わることに留意して読んで下さい。本が出版され次第、このホームページは削除されます。

A1.9 イメージ

 幾つかのウィジェットはグラフィックイメージ(画像)を貼り付ける「image」オプションを持っています。この「image」オプションでユーザが作成したイメージを貼り付けることができます。イメージの貼り付けには貼り付けるイメージから名前付きのイメージオブジェクトを作成する必要があります。tkinter にはイメージオブジェクトを作成するために、「BitmapImage クラス」と「PhotoImage クラス」が用意されています。「BitmapImage クラス」は「xbm」形式のモノクロビットマップイメージをサポートしています。「PhotoImage クラス」は「png」、「gif」、「ppm」形式のカラーイメージと「pgm」形式のグレースケールイメージをサポートしています。それぞれのクラス定義を以下に示します。

1. BitmapImage クラス

tkinter.BitmapImage(name=None, cnf={}, master=None, **kw)
tkinter の「image」オプションで設定できる、名前付きビットマップオブジェクトを「xbm」形式のデータから作成します。

引数
name
作成するビットマップオブジェクトの名前を設定します。省略または「None」を指定するとシステムが自動的に名前を付けます。
cnf
設定するオプションの以下のキーワードの文字列と値を辞書型で指定します。

 background
ビットマップデータが「0」のピクセルが表示する色を指定します。
空文字または指定なしの場合、背景ピクセル「0」は透明になります。このとき、「maskdata」または「maskfile」オプションの指定は無視されます。
 data
作成するビットマップオブジェクトのデータを文字列で指定します。データは「xbm」のデータ形式に従っている必要があります。
このオプションと「file」オプションの両方でデータが指定されている場合、このオプションの指定が優先されます。
 file
作成するビットマップオブジェクトのデータファイルをファイルのパス名で指定します。ファイルは「xbm」形式のデータファイルです。
このオプションと「data」オプションの両方でデータが指定されている場合、「data」オプションの指定が優先されます。
 foreground
ビットマップデータが「1」のピクセルが表示する色を指定します。
 maskdata
透過表示するピクセルを「0」としたビットマップデータを文字列で指定します。データは「data」または「file」オプションで指定したデータ形式と同じである必要があります。
「background」オプションが空文字または指定なしの場合、このオプションは無視されます。
このオプションと「maskfile」オプションの両方でデータが指定されている場合、このオプションの指定が優先されます。
 maskfile
透過表示するピクセルを「0」としたビットマップデータファイルをファイルのパス名で指定します。ファイルは「data」または「file」オプションで指定したデータ形式と同じである必要があります。
「background」オプションが空文字または指定なしの場合、このオプションは無視されます。
このオプションと「maskdata」オプションの両方でデータが指定されている場合、「maskdata」オプションの指定が優先されます。

master
ビットマップオブジェクトを使用するオブジェクトを指定します。指定したオブジェクト内で有効になります。省略または「None」を指定するとデフォルトのアプリケーションのウィンドウが設定されます
**kw
設定するパラメータの値をキーワードで指定します。パラメータは前記の「cnf」引数と同じです。

メソッド
config(**kw)
「configure」メソッドと同じです。
configure(**kw)
パラメータの値をキーワードで指定します。パラメータは前記の「cnf」引数と同じです。
height()
イメージの高さをピクセル単位で返します。
type()
イメージのタイプ「photo」または「bitmap」を返します。
width()
イメージの幅をピクセル単位で返します。

備考
この関数で作成するビットマップオブジェクトの元(ソース)データは「xbm」形式の必要があります。

「xbm」形式のデータは通常の画像フォーマットのヘッダの代わりに、画像の横と縦のピクセル数を指定した 2 つの #define 指示文が置かれます。続いて、画像の上から、左から右への行単位のピクセルデータが続きます。ピクセルデータはバイト単位でコンマで区切ったリストとして記述され、バイトデータは下位から上位へのビットが順に左から右へのピクセルに対応します。これらのデータはASCII文字列として以下のように記述されます。
   #define name_width w
   #define name_height h
   static unsigned char name_bits[] = {
     画像データ
   }
ここで、「name」は画像に付ける名前です。「width」と「height」は画像の幅と高さのピクセル数を「w」と「h」に記述します。画像データは行単位に改行されている必要はありません。

プログラムに「xbm」形式のデータを埋め込むには、上記の形式で画像データを文字列データとして記述します。  

2. PhotoImage クラス

tkinter.PhotoImage(name=None, cnf={}, master=None, **kw)
tkinter の「image」オプションで設定できる、名前付きイメージオブジェクトを作成します。作成できるデータ形式は「png」、「gif」、「ppm」、「pgm」です。

引数
name
作成するイメージブジェクトの名前を設定します。省略または「None」を指定するとシステムが自動的に名前を付けます。
cnf
設定するオプションの以下のキーワードの文字列と値を辞書型で指定します。

 data
作成するイメージブジェクトのデータを文字列で指定します。データは作成できるイメージのデータ形式に従っている必要があります。
このオプションと「file」オプションの両方でデータが指定されている場合、「file」オプションの指定が優先されます。
 format
「data」または「file」オプションで指定したデータ形式の名前を文字列で指定します。
このオプションが指定されている場合、「data」または「file」オプションで指定したデータのデータ形式と異なる場合、エラーになります。
「pgm」のデータ形式の場合、「ppm」を指定します。
 file
作成するイメージオブジェクトのデータファイルをファイルのパス名で指定します。ファイルは「png」、「gif」、「ppm」、「pgm」形式のデータファイルです。
このオプションと「data」オプションの両方でデータが指定されている場合、このオプションの指定が優先されます。
 gamma
色調補正処理(明るさの補正処理)としてのガンマ補正係数を浮動小数点の値で数値または文字列で指定します。デフォルトでは「1」に設定されています。「1」より大きい値はイメージを明るくし、「1」より小さい値はイメージを暗くします。
負の値を指定すると無視されます。
 height
読み込むイメージの高さをピクセル単位の整数値を数値または文字列で指定します。イメージの上端からのピクセル分が読み込まれます。「0」を指定すると、 格納されているデータに合わせてイメージを垂直方向に拡大または縮小されます。デフォルトでは「0」に設定されています。
 palette
イメージを表示するために使用する色のの解像度を指定します。
カラーの設定は、赤(R)、緑(G)、青(B)の順に「/」(スラッシュ)で区切った文字列で指定します。
単一の整数の数値または文字列で指定すると、グレースケールで表示された解像度になります。
 width
読み込むイメージの幅をピクセル単位の整数値を数値または文字列で指定します。イメージの左端からのピクセル分が読み込まれます。「0」を指定すると、 格納されているデータに合わせてイメージを水平方向に拡大または縮小されます。デフォルトでは「0」に設定されています。

master
イメージオブジェクトを使用するオブジェクトを指定します。指定したオブジェクト内で有効になります。省略または「None」を指定するとデフォルトのアプリケーションのウィンドウが設定されます
**kw
設定するパラメータの値をキーワードで指定します。パラメータは前記の「cnf」引数と同じです。

メソッド
blank()
イメージを透明にします。イメージは表示されなくなり、背景が透けて見えます。
cget(option)
指定したパラメータの値を返します。パラメータは前記の「cnf」引数と同じです。
copy()
イメージオブジェクトのコピーを返します。返されるコピーは新しいイメージオブジェクトです。
get(x, y)
イメージオブジェクトのピクセル座標(x, y) の色を、それぞれ赤、緑、青を表す 0 ~ 255 の 3 つの整数のタプルとして返します。座標はイメージの左上端が原点です。
put(data, to=None)
引数「to」で指定した座標を原点として、引数「data」で指定したピクセルデータをイメージオブジェクトに設定します。
引数「to」の座標 (x, y) はタプルで指定します。指定しない場合、イメージオブジェクトの左上端になります。
引数「data」は設定するピクセルデータの文字列です。ピクセルの色データを半角空白で区切って記述して行毎に「{ }」で囲います。行毎の「{ }」は半角空白で区切ります。色の記述は A1.3 色に準拠します。全ての行のピクセルデータ数は同じ必要があります。異なった場合、エラーになります。
subsample(x, y='')
イメージオブジェクトを縮小した新しいイメージオブジェクトを作成します。引数「x」と「y」にそれぞれ横方向と縦方向の縮小率を整数の数値または文字列で指定します。引数「y」に空文字を指定または省略した場合、縦方向の縮小率は横方向と同じになります。
負の値を指定すると、イメージは指定した方向に対して反転します。
write(filename, format=None, from_coords=None)
イメージオブジェクトの画像を「png」、「gif」、「ppm」、「pgm」形式のデータファイルとして保存します。
引数「filename」に、保存するファイル名を文字列で指定します。ファイル名はデータ形式の拡張子を含めても含めなくても良いです。 引数「format」に保存するデータ形式を文字列で指定します。「filename」にデータ形式の拡張子が含まれている場合、省略することができます。
引数「from_coords」に保存するイメージの矩形座標をタプル (xs, ys, xe, ye) で指定します。「xs, ys」は矩形の左上端の横と縦の座標、「xe, ye」は右下端の横と縦の座標で、ピクセル単位です。「xs, ys」を指定しない場合は、イメージの右下端になります。パラメータを省略した場合、全ピクセルが保存されます。
保存イメージデータの色深度はイメージオブジェクトの色深度より大きい必要があります。例えば、「gif」形式のデータは 8 ビットの 256 色なので、「png」、「ppm」、「pgm」形式のイメージオブジェクトを「gif」形式で保存する場合、8 ビット 256 色の形式のデータの必要があります。
zoom(x, y='')
イメージオブジェクトを拡大した新しいイメージオブジェクトを作成します。引数「x」と「y」にそれぞれ横方向と縦方向の拡大率を整数の数値または文字列で指定します。引数「y」に空文字を指定または省略した場合、縦方向の拡大率は横方向と同じになります。
指定する値は正の値の必要があります。0 および負の値を指定するとエラーになります。
config(**kw)
「configure」メソッドと同じです。
configure(**kw)
パラメータの値をキーワードで指定します。パラメータは前記の「cnf」引数と同じです。
height()
イメージの高さをピクセル単位で返します。
type()
イメージのタイプ「photo」または「bitmap」を返します。
width()
イメージの幅をピクセル単位で返します。

  "