21.2. "imageop" --- 生の画像データを操作する
********************************************

バージョン 2.6 で非推奨: "imageop" モジュールは Python 3 で削除されま
した。

"imageop" モジュールは画像に関する便利な演算が含まれています。Python
文字列に保存されている 8 または 32 ビットのピクセルから構成される画像
を操作します。これは "gl.lrectwrite()" と "imgfile" モジュールが使用し
ているものと同じフォーマットです。

このモジュールでは以下の変数と関数を定義しています:

exception imageop.error

   この例外はピクセル当りの未知のビット数などのすべてのエラーで発生さ
   せられます。

imageop.crop(image, psize, width, height, x0, y0, x1, y1)

   *image* の選択された部分を返します。 *image* は *width* × *height*
   の大きさで、 *psize* バイトのピクセルから構成されなければなりません
   。 *x0*, *y0*, *x1* および *y1* は "gl.lrectread()" パラメータと同
   様です。すなわち、境界は新画像に含まれます。新しい境界は画像の内部
   である必要はありません。旧画像の外側になるピクセルは値をゼロに設定
   されます。 *x0* が *x1* より大きければ、新画像は鏡像反転されます。y
   軸についても同じことが適用されます。

imageop.scale(image, psize, width, height, newwidth, newheight)

   *image* を大きさ *newwidth* × *newheight* に伸縮させて返します。補
   間は行われません。ばかばかしいほど単純なピクセルの複製と間引きを行
   い伸縮させます。そのため、コンピュータで作った画像やディザ処理され
   た画像は伸縮した後見た目が良くありません。

imageop.tovideo(image, psize, width, height)

   垂直ローパスフィルタ処理を画像全体に行います。それぞれの目標ピクセ
   ルを垂直に並んだ二つの元ピクセルの平均を計算することで行います。こ
   のルーチンの主な用途としては、画像がインターレース走査のビデオ装置
   に表示された場合に極端なちらつきを抑えるために用います。そのため、
   この名前があります。

imageop.grey2mono(image, width, height, threshold)

   全ピクセルを二値化することによって、深さ 8 ビットのグレースケール画
   像を深さ 1 ビットの画像へ変換します。処理後の画像は隙間なく詰め込ま
   れ、おそらく "mono2grey()" の引数としてしか使い道がないでしょう。

imageop.dither2mono(image, width, height)

   (ばかばかしいほど単純な) ディザ処理アルゴリズムを用いて、8 ビットグ
   レースケール画像を 1 ビットのモノクロ画像に変換します。

imageop.mono2grey(image, width, height, p0, p1)

   1 ビットモノクロ画像を 8 ビットのグレースケールまたはカラー画像に変
   換します。入力で値ゼロの全てのピクセルは出力では値 *p0* を取り、値
   1 の入力ピクセルは出力では値 *p1* を取ります。白黒のモノクロ画像を
   グレースケールへ変換するためには、値 "0" と "255" をそれぞれ渡して
   ください。

imageop.grey2grey4(image, width, height)

   ディザ処理を行わずに、8 ビットグレースケール画像を 4 ビットグレース
   ケール画像へ変換します。

imageop.grey2grey2(image, width, height)

   ディザ処理を行わずに、8 ビットグレースケール画像を 2 ビットグレース
   ケール画像に変換します。

imageop.dither2grey2(image, width, height)

   ディザ処理を行い、8 ビットグレースケール画像を 2 ビットグレースケー
   ル画像へ変換します。 "dither2mono()" については、ディザ処理アルゴリ
   ズムは現在とても単純です。

imageop.grey42grey(image, width, height)

   4 ビットグレースケール画像を 8 ビットグレースケール画像へ変換します
   。

imageop.grey22grey(image, width, height)

   2 ビットグレースケール画像を 8 ビットグレースケール画像へ変換します
   。

imageop.backward_compatible

   0 にセットすると、このモジュールの関数は、リトルエンディアンのシス
   テムで以前のバージョンと互換性のない方法でマルチバイトピクセル値を
   表現するようになります。このモジュールはもともと SGI 向けに書かれた
   のですが、SGI はビッグエンディアンのシステムであり、この変数を設定
   しても何の影響もありません。とはいえ、このコードはもともとどこでも
   動作するように考えて作られたわけではないので、バイトオーダに関する
   仮定が相互利用向けではありませんでした。この変数を 0 にすると、リト
   ルエンディアンのシステムではバイトオーダを反転して、ビッグエンディ
   アンと同じにします。
