モジュール java.desktop
パッケージ java.awt.image

クラスRaster

java.lang.Object
java.awt.image.Raster
直系の既知のサブクラス:
WritableRaster

public class Raster extends Object
ピクセルで構成される矩形配列を表現するクラスです。 Rasterは、サンプル値が格納されているDataBufferと、指定されたサンプル値をDataBufferから検出する方法が記述されているSampleModelをカプセル化します。

Rasterは、平面上の特定の矩形領域(必ずしも(0, 0)を含んでいなくてもよい)を占めるピクセルの値を定義します。 この矩形は、Rasterの境界の矩形と呼ばれ、getBoundsメソッドにより取得され、minX、minY、width、heightの値によって定義されます。 minXとminYの値は、Rasterの左上隅の座標を定義します。 境界の矩形外のピクセルを参照すると、例外がスローされたり、Rasterの関連DataBufferの意図しない要素が参照されることになります。 このような範囲外のアクセスは行わないようにしてください。

SampleModelは、RasterのサンプルがDataBufferのプリミティブ配列要素に格納される方法を記述します。 サンプルは、PixelInterleavedSampleModelやBandedSampleModelのようにデータ要素ごとに1つずつ格納することも、SinglePixelPackedSampleModelやMultiPixelPackedSampleModelのように複数の要素を1つにまとめて格納することもできます。 SampleModelは、サンプルが符号付き拡張形式かどうかも制御します。これにより、符号なしデータをbyte、short、intなどの、Javaの符号付きデータ型として格納できます。

Rasterは平面上のどこにでも存在できますが、SampleModelは(0, 0)から始まる簡易座標体系を利用します。 このため、Rasterは、Rasterの座標体系とSampleModelの座標体系の間でピクセル位置をマッピングできるようにする変換係数を持っています。 SampleModelの座標体系からRasterの座標体系への変換は、getSampleModelTranslateXメソッドとgetSampleModelTranslateYメソッドで取得できます。

RasterはほかのRasterとDataBufferを共有できますが、このためには、このようなRasterを明示的に構築するか、createChildメソッドとcreateTranslatedChildメソッドを使用します。 これらのメソッドによって構築されたRasterに対してgetParentメソッドを使用すると、構築元のRasterへの参照を取得できます。 createTranslatedChildやcreateChildの呼出しによって構築されたRasterでない場合、getParentはnullを返します。

createTranslatedChildメソッドは、現在のRasterのすべてのデータを共有する新しいRasterを返します。新しいRasterは、現在のRasterと同じ幅と高さの境界の矩形を占めますが、開始点が異なります。 たとえば、親のRasterが(10, 10)から(100, 100)までの領域を占める場合、変換後のRasterの領域の始点を(50, 50)に定義すると、親のピクセル(20, 20)と子のピクセル(60, 60)はこれら2つのRasterで共有されるDataBufferで同じ位置を占めます。 対応するSampleModel座標を取得する場合、最初のケースではピクセル座標に(-10, -10)が加算されるのに対し、2番目のケースでは(-50, -50)が加算されます。

親のsampleModelTranslateXとsampleModelTranslateYの値から、子のsampleModelTranslateXとsampleModelTranslateYの値を減算することで、Rasterの親子間の変換が可能です。

createChildメソッドを使うと、親の境界の矩形のサブセットのみを占め、同じ座標体系または変換後の座標体系を持つ新しいRasterや、親のバンドのサブセットを持つ新しいRasterを生成できます。

コンストラクタはすべて保護されています。 Rasterを生成する正しい方法は、このクラスで定義されている静的なcreateメソッドの1つを使うことです。 これらのメソッドを使うと、標準のインタリーブ化されたSampleModel、バンド化されたSampleModel、およびパックされたSampleModelを使うRasterのインスタンスが生成され、外部で生成されたSampleModelとDataBufferを結合して生成される場合と比べて効率的に処理できます。

関連項目: