Java プラットフォーム 1.2

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 つのサンプルデータの間にあるデータ配列要素数です。走査線ストライドは、任意のサンプルと次の走査線の同じ列にある対応するサンプルの間のデータ配列要素数です。バンドオフセットは、各バンドが格納されている DataBuffer のバンクの最初のデータ配列要素からそのバンドの最初のサンプルまでのデータ配列要素数を示します。バンドは、0 から N-1 です。バンクインデックスは、データバッファのバンクとイメージデータのバンドの対応を示します。


クラス java.awt.image.ComponentSampleModel から継承したフィールド
bandOffsets, bankIndices, numBands, numBanks, pixelStride, scanlineStride
 
クラス java.awt.image.SampleModel から継承したフィールド
dataType, height, numBands, 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 配列として返します。
 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, 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, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, 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 - イメージデータのバンド数

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 - 各バンドのバンドオフセット
メソッドの詳細

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅と高さを持つ新しい BandedSampleModel を作成します。新しい BandedSampleModel のバンド数、ストレージデータ型、およびバンクインデックスは、この BandedSampleModel と同じになります。バンドオフセットは、バンドのオフセットが w*pixelStride になり、すべてのバンドオフセットの最小値が 0 になるように圧縮されます。
オーバーライド:
クラス ComponentSampleModel 内の createCompatibleSampleModel

createSubsetSampleModel

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

createDataBuffer

public DataBuffer createDataBuffer()
この BandedSampleModel に対応する DataBuffer を作成します。DataBuffer のデータ型、バンク数、およびサイズは、この BandedSampleModel と一致します。
オーバーライド:
クラス ComponentSampleModel 内の createDataBuffer

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 へ、1 ピクセルのデータを転送する例です。通常、この転送方法は getPixel と setPixel を使用するよりも効率的です。

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

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

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

getPixel

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

getPixels

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

getSample

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

getSamples

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

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 のバンド数が同じで、対応するバンドの 1 サンプル当たりのビット数が同じで、transferType も同じ場合、2 組の DataBuffer と SampleModel のペアの組の間での転送には、getDataElements と setDataElements を使用するのが適切です。

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

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

setPixel

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

setPixels

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

setSample

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

setSamples

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

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.