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_BYTE
、TYPE_USHORT
、TYPE_SHORT
、TYPE_INT
、TYPE_FLOAT
およびTYPE_DOUBLE
の各データ型をサポートします。 -
フィールドのサマリー
クラス 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を構築します。 -
メソッドのサマリー
修飾子と型メソッド説明createCompatibleSampleModel
(int w, int h) 指定された幅と高さを持つ新しいBandedSampleModelを作成します。このBandedSampleModelに対応するDataBufferを作成します。DataBufferのデータ型、バンク数、およびサイズは、このBandedSampleModelと一致します。createSubsetSampleModel
(int[] bands) このBandedSampleModelのバンドのサブセットを持つ新しいBandedSampleModelを作成します。getDataElements
(int x, int y, Object obj, DataBuffer data) transferType型のプリミティブ配列内の1つのピクセルのデータを返します。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配列として返します。サンプルは、データ配列要素ごとに1つです。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配列として返します。データ配列要素にサンプル1個が対応します。void
setDataElements
(int x, int y, Object obj, DataBuffer data) 指定されたDataBufferの1つのピクセルのデータを、TransferType型のプリミティブ配列から設定します。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
-
コンストラクタの詳細
-
BandedSampleModel
public BandedSampleModel(int dataType, int w, int h, int numBands) 指定されたパラメータを使ってBandedSampleModelを構築します。 ピクセル・ストライドは、1データ要素になります。 走査線ストライドは、幅と同じになります。 各バンドは個別のバンクに格納され、すべてのバンド・オフセットは0になります。- パラメータ:
dataType
- サンプルの格納のためのデータ型。w
- 記述されたイメージ・データの領域の幅(単位はピクセル)。h
- 記述されたイメージ・データの領域の高さ(単位はピクセル)。numBands
- イメージ・データのバンド数。- 例外:
IllegalArgumentException
-w
とh
の両方が0以下の場合IllegalArgumentException
-w
とh
の積がInteger.MAX_VALUE
より大きい場合IllegalArgumentException
-numBands
が0より大きい場合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
- 記述されたイメージ・データの領域の高さ(単位はピクセル)。scanlineStride
- イメージ・データの走査線ストライド。bankIndices
- 各バンドのバンク・インデックス。bandOffsets
- 各バンドのバンド・オフセット。- 例外:
IllegalArgumentException
-w
とh
の両方が0以下の場合IllegalArgumentException
-w
とh
の積がInteger.MAX_VALUE
より大きい場合IllegalArgumentException
-scanlineStride
が0より小さい場合NullPointerException
-bankIndices
がnull
の場合NullPointerException
-bandOffsets
がnull
の場合IllegalArgumentException
-bandOffsets.length
が0の場合IllegalArgumentException
-bankIndices
の長さがbandOffsets
の長さと等しくない場合IllegalArgumentException
-bandIndices
のバンク・インデックスのいずれかが0より小さい場合IllegalArgumentException
-dataType
がこのサンプル・モデルでサポートされるデータ型でない場合
-
-
メソッドの詳細
-
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h) 指定された幅と高さを持つ新しいBandedSampleModelを作成します。 新しいBandedSampleModelのバンド数、ストレージ・データ型、およびバンク・インデックスは、このBandedSampleModelと同じになります。 バンド・オフセットは、バンドのオフセットがw*pixelStrideになり、すべてのバンド・オフセットの最小値が0になるように圧縮されます。- オーバーライド:
createCompatibleSampleModel
、クラスComponentSampleModel
- パラメータ:
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の組み合わせのバンドのサブセットを持つイメージを表します。- オーバーライド:
createSubsetSampleModel
、クラスComponentSampleModel
- パラメータ:
bands
- このComponentSampleModel
のバンドのサブセット- 戻り値:
- この
ComponentSampleModel
のバンドのサブセットで作成されたComponentSampleModel
。 - 例外:
RasterFormatException
- バンド数がこのサンプル・モデル内のバンク数より多い場合。IllegalArgumentException
-dataType
がサポートされているデータ型でない場合
-
createDataBuffer
public DataBuffer createDataBuffer()このBandedSampleModelに対応するDataBufferを作成します。DataBufferのデータ型、バンク数、およびサイズは、このBandedSampleModelと一致します。- オーバーライド:
createDataBuffer
、クラスComponentSampleModel
- 戻り値:
- この
ComponentSampleModel
とデータ型、バンク数、およびサイズが同じDataBuffer
。 - 例外:
IllegalArgumentException
-dataType
がサポートされている型でない場合。
-
getDataElements
public Object getDataElements(int x, int y, Object obj, DataBuffer data) transferType型のプリミティブ配列内の1つのピクセルのデータを返します。 BandedSampleModelの場合、これは同じデータ型になり、サンプルは配列要素ごとに1つ返されます。 通常は、Objectが自動的に作成され、正しい基本データ型になるように、objにはnullが渡されます。次のコードは、BandedSampleModel
bsm1
によってストレージ・レイアウトが記述されているDataBufferdb1
から、BandedSampleModelbsm2
によってストレージ・レイアウトが記述されているDataBufferdb2
へ、1ピクセルのデータを転送する例です。 通常、この転送は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がスローされます。
- オーバーライド:
getDataElements
、クラスComponentSampleModel
- パラメータ:
x
- ピクセル位置のX座標y
- ピクセル位置のY座標obj
- nullでない場合は、ピクセル・データが返されるプリミティブ配列。data
- イメージ・データを格納するDataBuffer。- 戻り値:
- 指定されたピクセルのデータ。
- 関連項目:
-
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data) 指定されたピクセルのすべてのサンプルをint配列として返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- オーバーライド:
getPixel
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
getPixels
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
getSample
、クラスComponentSampleModel
- パラメータ:
x
- ピクセル位置のX座標y
- ピクセル位置のY座標b
- 返されるバンドdata
- イメージ・データを格納するDataBuffer- 戻り値:
- 指定されたピクセルの指定されたバンド内のサンプル
- 関連項目:
-
getSampleFloat
public float getSampleFloat(int x, int y, int b, DataBuffer data) (x, y)に位置するピクセルの指定されたバンド内のサンプルをfloatとして返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- オーバーライド:
getSampleFloat
、クラスComponentSampleModel
- パラメータ:
x
- ピクセル位置のX座標y
- ピクセル位置のY座標b
- 返されるバンドdata
- イメージ・データを格納するDataBuffer- 戻り値:
- 指定されたピクセルの指定されたバンド内のサンプルを表すfloat値
-
getSampleDouble
public double getSampleDouble(int x, int y, int b, DataBuffer data) (x, y)に位置するピクセルの指定されたバンド内のサンプルをdoubleとして返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- オーバーライド:
getSampleDouble
、クラスComponentSampleModel
- パラメータ:
x
- ピクセル位置のX座標y
- ピクセル位置のY座標b
- 返されるバンドdata
- イメージ・データを格納するDataBuffer- 戻り値:
- 指定されたピクセルの指定されたバンド内のサンプルを表すdouble値
-
getSamples
public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data) 指定されたピクセル矩形に使う、指定されたバンド内のサンプルをint配列として返します。データ配列要素にサンプル1個が対応します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- オーバーライド:
getSamples
、クラスComponentSampleModel
- パラメータ:
x
- 左上のピクセル位置のX座標y
- 左上のピクセル位置のY座標w
- ピクセル矩形の幅h
- ピクセル矩形の高さb
- 返されるバンドiArray
- nullでない場合、この配列内のサンプルを返しますdata
- イメージ・データを格納するDataBuffer- 戻り値:
- 指定された領域内にあるピクセルの指定されたバンド内のサンプル
- 関連項目:
-
setDataElements
public void setDataElements(int x, int y, Object obj, DataBuffer data) 指定されたDataBufferの1つのピクセルのデータを、TransferType型のプリミティブ配列から設定します。 BandedSampleModelの場合、これは同じデータ型になり、サンプルは配列要素ごとに1つ転送されます。次のコードは、BandedSampleModel
bsm1
によってストレージ・レイアウトが記述されているDataBufferdb1
から、BandedSampleModelbsm2
によってストレージ・レイアウトが記述されているDataBufferdb2
へ、1ピクセルのデータを転送する例です。 通常、この転送は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がスローされます。
- オーバーライド:
setDataElements
、クラスComponentSampleModel
- パラメータ:
x
- ピクセル位置のX座標y
- ピクセル位置のY座標obj
- nullでない場合は、このオブジェクト内のプリミティブ配列を返すdata
- イメージ・データを格納するDataBuffer- 関連項目:
-
setPixel
public void setPixel(int x, int y, int[] iArray, DataBuffer data) サンプルのint配列を入力として使ってDataBuffer内のピクセルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- オーバーライド:
setPixel
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
setPixels
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
setSample
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
setSample
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
setSample
、クラスComponentSampleModel
- パラメータ:
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がスローされます。- オーバーライド:
setSamples
、クラスComponentSampleModel
- パラメータ:
x
- 左上のピクセル位置のX座標y
- 左上のピクセル位置のY座標w
- ピクセル矩形の幅h
- ピクセル矩形の高さb
- 設定されるバンドiArray
- 入力サンプル配列data
- イメージ・データを格納するDataBuffer- 関連項目:
-