目次 | 前の項目 | 次の項目 | Java 2D API |
BufferedImage オブジェクトは、Raster を使ってピクセルデータの矩形配列を管理します。Raster クラスでは、イメージの座標系のためのフィールドとして、幅、高さ、および原点が定義されています。Raster オブジェクト自体は、DataBuffer と SampleModel という 2 つのオブジェクトを使って、ピクセルデータを管理します。DataBuffer はラスタのピクセルデータを格納するオブジェクトで (「イメージデータと DataBuffer」を参照)、SampleModel は DataBuffer からのピクセルデータの解釈を提供します (「SampleModel からのピクセルデータの抽出」を参照)。
ほとんどの場合、Raster を直接作る必要はありません。メモリに BufferedImage を作ると、Raster が必ず提供されます。ただし、BufferedImage コンストラクタメソッドを使うと、WritableRaster を渡して Raster を作成できます。Raster クラスでは、DataBuffer と SampleModel を指定して Raster を作成するための static ファクトリメソッドがいくつか提供されています。RasterOp フィルタリングクラスを実装するときは、これらのファクトリを使うことができます。
Raster クラスには、親ラスタと子ラスタの概念が組み込まれています。これにより、同じ親からいくつでもバッファリングされたイメージを作成できるので、記憶効率を向上させることができます。親とその子はすべて同じデータバッファを参照し、それぞれの子は、バッファ内で自分のイメージの場所を識別するために固有のオフセットと境界を持っています。子は、getParent メソッド使って所有権を識別します。サブラスタを作るには、Raster.createSubRaster メソッドを使います。サブラスタを作るときは、サブラスタがカバーする親の領域と親の原点からのオフセットを示します。
Raster クラスでは、ピクセルとピクセルデータにアクセスするためのさまざまな方法が定義されています。これらの方法は、RasterOp インタフェースを実装するとき、または低レベルのピクセル操作を行う必要のあるメソッドを実装するときに、役に立ちます。RasterOp インタフェースは、イメージデータに対するラスタレベルのフィルタリングおよび操作を提供します。Raster.getPixel メソッドを使うと、ピクセルを個別に取得できます。ピクセルは、配列の中の個別のサンプルとして返されます。Raster.getDataElements メソッドからは、指定した一連の解釈されていないイメージデータが DataBuffer から取り出されて返されます。Raster.getSample メソッドからは、個別のピクセルのサンプルが返されます。getSamples メソッドからは、イメージの特定の範囲に対するバンドが返されます。
これらのメソッドのほかに、Raster クラスのインスタンス変数を通して、データバッファとサンプルモデルにアクセスすることもできます。これらのオブジェクトでは、Raster のピクセルデータにアクセスして解釈するための別の手段が提供されています。
WritableRaster サブクラスでは、ピクセルデータとサンプルを設定するメソッドが提供されます。BufferedImage に関連する Raster は実際には WritableRaster なので、ピクセルデータの操作に必要なすべてのアクセスが提供されます。