# 20.11 `imgfile` -- SGI imglib ファイルのサポート

利用可能な条件: IRIX.

`imgfile` モジュールは、Python プログラムが SGI imglib 画像 ファイル (.rgb ファイルとしても知られています) にアクセスできる ようにします。このモジュールは完全なものにはほど遠いですが、その機能 はある状況で十分役に立つものなので、ライブラリで提供されています。 現在、カラーマップ形式のファイルはサポートされていません。

このモジュールでは以下の変数および関数が定義されています:

exception `error`
  この例外は、サポートされていないファイル形式の場合のような全てのエラーで 送出されます。

`getsizes`( | file)

  この関数はタプル `(x, y, z)` を返します。 x および y は画像のサイズをピクセルで表したもので、 z はピクセルあたりのバイト長です。3 バイトの RGB ピクセルと 1 バイトのグレイスケールピクセルのみが現在サポートされています。

`read`( | file)

  この関数は指定されたファイル上の画像を読み出して復号化し、Python 文字列として返します。この文字列は 1 バイトのグレイスケールピクセル か、4 バイトの RGBA ピクセルによるものです。左下のピクセルが文字列 中の最初のピクセルになります。これは `gl.lrectwrite()` に渡すのに適した形式です。

`readscaled`( | file, x, y, filter[, blur])

  この関数は read と同じですが、x および y のサイズに スケールされた画像を返します。filter および blur パラメタが省略された場合、単にピクセルデータを捨てたり複製したりする ことによってスケール操作が行われるので、処理結果は、特に計算機上で 合成した画像の場合にはおよそ完璧とはいえないものになります。

  そうする代わりに、スケール操作後に画像を平滑化するために用いる フィルタを指定することができます。サポートされているフィルタの 形式は `'impulse'`、`'box'`、 `'triangle'`、 `'quadratic'`、および `'gaussian'` です。フィルタを 指定する場合、blur はオプションのパラメタで、フィルタの 不明瞭化度を指定します。標準の値は `1.0` です。

  `readscaled()` は正しいアスペクト比をまったく維持しようと しないので、それはユーザの責任になります。

`ttob`( | flag)

  この関数は画像のスキャンラインの読み書きを下から上に向かって 行う (フラグがゼロの場合で、SGI GL 互換です) か、上から下に向かって 行う (フラグが 1 の場合で、X 互換です) かを決定する大域的なフラグを 設定します。標準の値はゼロです。

`write`( | file, data, x, y, z)

  この関数は data 中の RGB またはグレイスケールのデータ を画像ファイル file に書き込みます。x および y には画像のサイズを与え、z は 1 バイトグレイスケール画像 の場合には 1 で、RGB 画像の場合には 3 (4 バイトの値として記憶され、 下位 3 バイトが使われます) です。これらは `gl.lrectread()` が返すデータの形式です。