DATE : 2006/07/21 (Fri)
JAI で基本となるクラスは、次の2つです。
ParameterBlock
処理を行う際のパラメータを設定するためのクラスです。
例えば、画像の周辺部を切り落とす Crop 操作は以下のパラメータを指定できます。(詳しくは、javax.media.jai.operator.CropDescriptorをご覧ください)
パラメータ名 | 型 | 説明 |
---|---|---|
x | java.lang.Float | 切り取る領域の原点の x 座標値 |
y | java.lang.Float | 切り取る領域の原点の y 座標値 |
width | java.lang.Float | 切り取る領域の幅 |
height | java.lang.Float | 切り取る領域の高さ |
なお、原点とは、領域の左上隅の座標のことを言います。
ここで、100×100の画像(java.awt.image.BufferedImage)の外周10 px を切り落とすとすると、パラメータは次のようになります。
パラメータ名 | 値 |
---|---|
x | 10 |
y | 10 |
width | 80 px |
height | 80 px |
このパラメータを構築するコードは、次のようになります。
ここでのポイントは、以下の通りです。
- addSource メソッドで操作対象の画像を指定する。
- add メソッドでパラメータを順番に指定する。
- パラメータの型に気をつける。
ParameterBlock parameter = new ParameterBlock();
// 操作対象画像の設定
parameter.addSource(image);
// パラメータの設定
parameter.add((float) 10);
parameter.add((float) 10);
parameter.add((float) 80);
parameter.add((float) 80);
ここで、操作対象の画像を表すオブジェクトは image 変数に格納されているものとします。
なお、addSource メソッドで指定できる画像は、java.awt.image.RenderedImage か java.awt.image.renderble.RenerableImage のどちらかです。今回は RenderedImage の方を指定しました。両者の違いは、今回は省略します。
なお、パラメータの型が異なると、操作の実行時に例外が発生します。
ちなみに、JAI には javax.media.jai.ParameterBlockJAI というクラスがあります。こちらを使うと、パラメータ名を指定して値を設定できます。
JAI
上で設定したパラメータで Crop 操作を行うコードは次の通りです。
RenderedOp result;
result = JAI.create("Crop", parameter);
ここで、create メソッドの第1引数で指定している文字列は、実行したい操作の名前です。具体的には、実行したい操作の「GrobalName」を指定します。例えば、Crop 操作の場合は、javax.media.jai.operator.CropDescriptor に「GrobalName」が「Crop」と設定されています。ちなみに、大文字小文字の区別はありません。「crop」と操作を指定しても、動作します。
なお、操作の結果返ってくるオブジェクトは、RenderedImage インタフェースを実装しています。そのため、続けて他の操作を行う場合は、返ってきたオブジェクトを次の操作の対象としてそのまま使うことができます。