目次 | 前の項目 | 次の項目 Java 2D API


5.4 Raster の管理と操作

BufferedImage オブジェクトは、Raster を使ってピクセルデータの矩形配列を管理します。 Raster クラスでは、イメージの座標系のためのフィールドとして、幅、高さ、および原点が定義されています。 Raster オブジェクト自体は、DataBuffer と SampleModel という 2 つのオブジェクトを使って、ピクセルデータを管理します。 DataBuffer はラスタのピクセルデータを格納するオブジェクトで (「イメージデータと DataBuffer」を参照)、SampleModel は DataBuffer からのピクセルデータの解釈を提供します (「SampleModel からのピクセルデータの抽出」を参照)。


5.4.1 Raster の作成

ほとんどの場合、Raster を直接作る必要はありません。 メモリに BufferedImage を作ると、Raster が必ず提供されます。 ただし、BufferedImage コンストラクタメソッドを使うと、WritableRaster を渡して Raster を作成できます。

Raster クラスでは、DataBuffer と SampleModel を指定して Raster を作成するための static ファクトリメソッドがいくつか提供されています。 RasterOp フィルタリングクラスを実装するときは、これらのファクトリを使うことができます。


5.4.2 親と子のラスタ

Raster クラスには、親ラスタと子ラスタのコンセプトが組み込まれています。 これにより、同じ親からいくつでもバッファリングされたイメージを作成できるので、記憶効率を向上させることができます。 親とその子はすべて同じデータバッファを参照し、それぞれの子は、バッファ内で自分のイメージの場所を識別するために固有のオフセットと境界を持っています。 子は、getParent メソッド使って所有権を識別します。

サブラスタを作成するには、Raster.createSubRaster メソッドを使います。サブラスタを作成する際には、サブラスタがカバーする親の領域と親の原点からのオフセットを指定します。


5.4.3 Raster に対する操作

Raster クラスでは、ピクセルとピクセルデータにアクセスするためのさまざまな方法が定義されています。 これらの方法は、RasterOp インタフェースを実装するとき、または低レベルのピクセル操作を行う必要のあるメソッドを実装するときに、役に立ちます。 RasterOp インタフェースは、イメージデータに対するラスタレベルのフィルタリングおよび操作を提供します。

Raster.getPixel メソッドを使うと、ピクセルを個別に取得できます。 ピクセルは、配列の中の個別のサンプルとして返されます。 Raster.getDataElements メソッドからは、指定した一連の解釈されていないイメージデータが DataBuffer から取り出されて返されます。 Raster.getSample メソッドからは、個別のピクセルのサンプルが返されます。 getSamples メソッドからは、イメージの特定の範囲に対するバンドが返されます。

これらのメソッドのほかに、Raster クラスのインスタンス変数を通して、データバッファとサンプルモデルにアクセスすることもできます。 これらのオブジェクトでは、Raster のピクセルデータにアクセスして解釈するための別の手段が提供されています。


5.4.4 WritableRaster サブクラス

WritableRaster サブクラスでは、ピクセルデータとサンプルを設定するメソッドが提供されます。 BufferedImage に関連する Raster は実際には WritableRaster なので、ピクセルデータの操作に必要なすべてのアクセスが提供されます。



目次 | 前の項目 | 次の項目
Copyright © 1997-2001 Sun Microsystems, Inc. All Rights Reserved.