JavaTM 2 Platform
Std. Ed. v1.3

java.awt.image
クラス BandedSampleModel

java.lang.Object
  |
  +--java.awt.image.SampleModel
        |
        +--java.awt.image.ComponentSampleModel
              |
              +--java.awt.image.BandedSampleModel

public final class BandedSampleModel
extends ComponentSampleModel

このクラスは、バンドインタリーブ化方式で格納されるイメージデータを表します。ピクセルの各サンプルは、DataBuffer のデータ要素に 1 つずつ格納されます。このクラスは ComponentSampleModel をサブクラス化しますが、ComponentSampleModel と比べて、バンドインタリーブ化方式のイメージデータにアクセスするより効率的な実装を提供できます。通常、このクラスは、各バンドのサンプルデータを DataBuffer の別々のバンクに格納したイメージを処理する場合に使用されます。アクセス用メソッドが提供されているため、イメージデータを直接操作できます。ピクセルストライドは、同じ走査線上の同じバンドの 2 つのサンプルデータの間にあるデータ配列要素数です。BandedSampleModel のピクセルストライドはその 1 つです。走査線ストライドは、指定されたサンプルと次の走査線の同じ列にある対応するサンプルの間のデータ配列要素数です。バンドオフセットは、各バンドが格納されている DataBuffer のバンクの最初のデータ配列要素からそのバンドの最初のサンプルまでのデータ配列要素数を示します。バンドは、0 から N-1 です。バンクインデックスは、データバッファのバンクとイメージデータのバンドの対応を示します。このクラスは、TYPE_BYTETYPE_USHORTTYPE_SHORTTYPE_INT のデータ形式をサポートします。


クラス java.awt.image.ComponentSampleModel から継承したフィールド
bandOffsets, bankIndices, numBands, numBanks, pixelStride, scanlineStride
 
クラス java.awt.image.SampleModel から継承したフィールド
dataType, height, width
 
コンストラクタの概要
BandedSampleModel(int dataType, int w, int h, int numBands)
          指定されたパラメータを使って BandedSampleModel を構築します。
BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
          指定されたパラメータを使って BandedSampleModel を構築します。
 
メソッドの概要
 SampleModel createCompatibleSampleModel(int w, int h)
          指定された幅と高さを持つ新しい BandedSampleModel を作成します。
 DataBuffer createDataBuffer()
          この BandedSampleModel に対応する DataBuffer を作成します。
 SampleModel createSubsetSampleModel(int[] bands)
          この BandedSampleModel のバンドのサブセットを持つ新しい BandedSampleModel を作成します。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          単一ピクセルのデータを、transferType 型のプリミティブ配列として返します。
 int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
          指定されたピクセルのすべてのサンプルを int 配列として返します。
 int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          指定された矩形のピクセルのすべてのサンプルを int 配列として返します。
 int getSample(int x, int y, int b, DataBuffer data)
          (x,y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。
 double getSampleDouble(int x, int y, int b, DataBuffer data)
          (x,y) に位置するピクセルの指定されたバンド内のサンプルを double として返します。
 float getSampleFloat(int x, int y, int b, DataBuffer data)
          (x,y) に位置するピクセルの指定されたバンド内のサンプルを float として返します。
 int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          指定されたピクセル矩形に使う指定されたバンドのサンプルを int 配列として返します。
 void setDataElements(int x, int y, Object obj, DataBuffer data)
          transferType 型のプリミティブ配列から、指定された DataBuffer にある単一ピクセルのデータを設定します。
 void setPixel(int x, int y, int[] iArray, DataBuffer data)
          サンプルの int 配列を入力として使用して DataBuffer 内のピクセルを設定します。
 void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          配列要素ごとに 1 つのサンプルが格納されている int 配列から、ピクセルの矩形のすべてのサンプルを設定します。
 void setSample(int x, int y, int b, double s, DataBuffer data)
          double を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。
 void setSample(int x, int y, int b, float s, DataBuffer data)
          float を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。
 void setSample(int x, int y, int b, int s, DataBuffer data)
          int を入力として使用して DataBuffer 内の (x,y) に位置するピクセルの、指定したバンド内のサンプルを設定します。
 void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          データ配列要素当たり 1 個のサンプルを格納している int 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。
 
クラス java.awt.image.ComponentSampleModel から継承したメソッド
getBandOffsets, getBankIndices, getNumDataElements, getOffset, getOffset, getPixelStride, getSampleSize, getSampleSize, getScanlineStride
 
クラス java.awt.image.SampleModel から継承したメソッド
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

BandedSampleModel

public BandedSampleModel(int dataType,
                         int w,
                         int h,
                         int numBands)
指定されたパラメータを使って BandedSampleModel を構築します。ピクセルストライドは、1 データ要素になります。走査線ストライドは、幅と同じになります。各バンドは個別のバンクに格納され、すべてのバンドオフセットは 0 になります。
パラメータ:
dataType - サンプルの格納のためのデータ形式
w - 記述されるイメージデータの領域の幅 (ピクセル数)
h - 記述されるイメージデータの領域の高さ (ピクセル数)
numBands - イメージデータのバンド数
例外:
IllegalArgumentException - dataType がサポートされていない場合

BandedSampleModel

public BandedSampleModel(int dataType,
                         int w,
                         int h,
                         int scanlineStride,
                         int[] bankIndices,
                         int[] bandOffsets)
指定されたパラメータを使って BandedSampleModel を構築します。バンド数は、bandOffsets 配列と bankIndices 配列の長さ (これら 2 つの配列は同じ長さであることが必要) から推定されます。ピクセルストライドは、1 データ要素になります。
パラメータ:
dataType - サンプルの格納のためのデータ形式
w - 記述されるイメージデータの領域の幅 (ピクセル数)
h - 記述されるイメージデータの領域の高さ (ピクセル数)
numBands - イメージデータのバンド数
scanlineStride - イメージデータの走査線ストライド
bankIndices - 各バンドのバンクインデックス
bandOffsets - 各バンドのバンドオフセット
例外:
IllegalArgumentException - dataType がサポートされていない場合
メソッドの詳細

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅と高さを持つ新しい BandedSampleModel を作成します。新しい BandedSampleModel のバンド数、ストレージデータ型、およびバンクインデックスは、この BandedSampleModel と同じになります。バンドオフセットは、バンドのオフセットが w*pixelStride になり、すべてのバンドオフセットの最小値が 0 になるように圧縮されます。
オーバーライド:
クラス ComponentSampleModel 内の createCompatibleSampleModel
パラメータ:
w - 結果として返された BandedSampleModel の幅
h - 結果として返された BandedSampleModel の高さ
戻り値:
指定された幅と高さを持つ新しい BandedSampleModel
例外:
IllegalArgumentException - w または h が、Integer.MAX_VALUE または Integer.MIN_VALUE のどちらかと同じ場合
IllegalArgumentException - dataType がサポートされていない場合

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この BandedSampleModel のバンドのサブセットを持つ新しい BandedSampleModel を作成します。新しい BandedSampleModel は、既存の BandedSampleModel と使用できる DataBuffer であればどの DataBuffer とも組み合わせて使用できます。新しい BandedSampleModel と DataBuffer の組み合わせは、元の BandedSampleModel と DataBuffer の組み合わせのバンドのサブセットを持つイメージを表します。
オーバーライド:
クラス ComponentSampleModel 内の createSubsetSampleModel
例外:
RasterFormatException - バンド数がこのサンプルモデル内のバンク数より多い場合
IllegalArgumentException - dataType がサポートされていない場合

createDataBuffer

public DataBuffer createDataBuffer()
この BandedSampleModel に対応する DataBuffer を作成します。DataBuffer のデータ型、バンク数、およびサイズは、この BandedSampleModel と一致します。
オーバーライド:
クラス ComponentSampleModel 内の createDataBuffer
例外:
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_SHORTDataBuffer.TYPE_INT のいずれでもない場合

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)
単一ピクセルのデータを、transferType 型のプリミティブ配列として返します。BandedSampleModel の場合、これは同じデータ型になり、サンプルは配列要素ごとに 1 つ返されます。通常、obj は null として渡されるので、Object は自動的に作成され、正しい基本データ型になります。

次のコードは、BandedSampleModel bsm1 によってストレージレイアウトが記述されている DataBuffer db1 から、BandedSampleModel bsm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、データを転送する例です。通常、この転送方法は getPixel と setPixel を使用するよりも効率的です。

 	     BandedSampleModel bsm1, bsm2;
	     DataBufferInt db1, db2;
 	     bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
                            db2);
 
SampleModel のバンド数が同じで、対応するバンドのサンプル当りのビット数が同じで、transferType が同じである場合、2 つの DataBuffer/SampleModel のペアの間での転送するときは、getDataElements/setDataElements を使用するのが適切です。

obj が null でない場合は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj が null でなく、ピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされることもあります。

オーバーライド:
クラス ComponentSampleModel 内の getDataElements
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
obj - null でない場合は、返されたピクセルデータの入るプリミティブ配列
data - イメージデータが格納されている DataBuffer

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
指定されたピクセルのすべてのサンプルを int 配列として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の getPixel
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] iArray,
                       DataBuffer data)
指定された矩形のピクセルのすべてのサンプルを int 配列として返します。サンプルは、データ配列要素ごとに 1 つです。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の getPixels
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
(x,y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の getSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSampleFloat

public float getSampleFloat(int x,
                            int y,
                            int b,
                            DataBuffer data)
(x,y) に位置するピクセルの指定されたバンド内のサンプルを float として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の getSampleFloat
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSampleDouble

public double getSampleDouble(int x,
                              int y,
                              int b,
                              DataBuffer data)
(x,y) に位置するピクセルの指定されたバンド内のサンプルを double として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の getSampleDouble
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer

getSamples

public int[] getSamples(int x,
                        int y,
                        int w,
                        int h,
                        int b,
                        int[] iArray,
                        DataBuffer data)
指定されたピクセル矩形に使う指定されたバンドのサンプルを int 配列として返します。配列要素にサンプル 1 個が対応します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の getSamples
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 返されるバンド
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータが格納されている DataBuffer

setDataElements

public void setDataElements(int x,
                            int y,
                            Object obj,
                            DataBuffer data)
transferType 型のプリミティブ配列から、指定された DataBuffer にある単一ピクセルのデータを設定します。BandedSampleModel の場合、これは同じデータ型になり、サンプルは配列要素ごとに 1 つ転送されます。

次のコードは、BandedSampleModel bsm1 によってストレージレイアウトが記述されている DataBuffer db1 から、BandedSampleModel bsm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、データを転送する例です。通常、この転送方法は getPixel と setPixel を使用するよりも効率的です。

 	     BandedSampleModel bsm1, bsm2;
	     DataBufferInt db1, db2;
 	     bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
                            db2);
 
SampleModel のバンド数が同じで、対応するバンドのサンプル当りのビット数が同じで、transferType が同じである場合、2 つの DataBuffer/SampleModel のペアの間での転送するときは、getDataElements/setDataElements を使用するのが適切です。

obj は transferType 型のプリミティブ配列でなければなりません。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj がピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。

オーバーライド:
クラス ComponentSampleModel 内の setDataElements
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
obj - null でない場合は、このオブジェクトにあるプリミティブ配列を返す
data - イメージデータが格納されている DataBuffer

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
サンプルの int 配列を入力として使用して DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の setPixel
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] iArray,
                      DataBuffer data)
配列要素ごとに 1 つのサンプルが格納されている int 配列から、ピクセルの矩形のすべてのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の setPixels
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - int 配列にある入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
int を入力として使用して DataBuffer 内の (x,y) に位置するピクセルの、指定したバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - int での入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      float s,
                      DataBuffer data)
float を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - float での入力サンプル
data - イメージデータが格納されている DataBuffer

setSample

public void setSample(int x,
                      int y,
                      int b,
                      double s,
                      DataBuffer data)
double を入力として使って DataBuffer 内の (x,y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
オーバーライド:
クラス ComponentSampleModel 内の setSample
パラメータ:
x - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 設定されるバンド
s - double での入力サンプル
data - イメージデータが格納されている DataBuffer

setSamples

public void setSamples(int x,
                       int y,
                       int w,
                       int h,
                       int b,
                       int[] iArray,
                       DataBuffer data)
データ配列要素当たり 1 個のサンプルを格納している int 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされる場合があります。
オーバーライド:
クラス ComponentSampleModel 内の setSamples
パラメータ:
x - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 設定されるバンド
iArray - 入力サンプル配列
data - イメージデータが格納されている DataBuffer

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.