JavaTM 2 Platform
Standard Ed. 5.0

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_INTTYPE_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 を構築します。
 
メソッドの概要
 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 配列として返します。
 int hashCode()
          オブジェクトのハッシュコード値を返します。
 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 から継承されたメソッド
equals, 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, finalize, getClass, 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 - 記述されるイメージデータの領域の高さ (ピクセル数)
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
パラメータ:
bands - この ComponentSampleModel のバンドのサブセット
戻り値:
この ComponentSampleModel のバンドのサブセットで作成された ComponentSampleModel
例外:
RasterFormatException - バンド数がこのサンプルモデル内のバンク数より多い場合
IllegalArgumentException - dataType がサポートされていない場合

createDataBuffer

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

オーバーライド:
クラス ComponentSampleModel 内の createDataBuffer
戻り値:
この ComponentSampleModel とデータ型、バンク数、およびサイズが同じ DataBuffer
例外:
IllegalArgumentException - dataType がサポートされていない場合

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, y - ピクセル位置の座標
obj - null でない場合は、ピクセルデータが返されるプリミティブ配列
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルのデータ
関連項目:
setDataElements(int, int, Object, DataBuffer)

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
指定されたピクセルのすべてのサンプルを int 配列として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。

オーバーライド:
クラス ComponentSampleModel 内の getPixel
パラメータ:
x, y - ピクセル位置の座標
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルのサンプル
関連項目:
setPixel(int, int, int[], DataBuffer)

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] iArray,
                       DataBuffer data)
指定された矩形のピクセルのすべてのサンプルを int 配列として返します。サンプルは、データ配列要素ごとに 1 つです。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。

オーバーライド:
クラス ComponentSampleModel 内の getPixels
パラメータ:
x, y - 左上のピクセル位置の座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータを格納する DataBuffer
戻り値:
指定された領域内のピクセルのサンプル
関連項目:
setPixels(int, int, int, int, int[], DataBuffer)

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
(x, y) に位置するピクセルの、指定されたバンド内のサンプルを int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。

オーバーライド:
クラス ComponentSampleModel 内の getSample
パラメータ:
x, y - ピクセル位置の座標
b - 返されるバンド
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルの指定されたバンド内のサンプル
関連項目:
setSample(int, int, int, int, DataBuffer)

getSampleFloat

public float getSampleFloat(int x,
                            int y,
                            int b,
                            DataBuffer data)
(x, y) に位置するピクセルの指定されたバンド内のサンプルを float として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の getSampleFloat
パラメータ:
x, y - ピクセル位置の座標
b - 返されるバンド
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルの指定されたバンド内のサンプルを表す float 値

getSampleDouble

public double getSampleDouble(int x,
                              int y,
                              int b,
                              DataBuffer data)
(x, y) に位置するピクセルの指定されたバンド内のサンプルを double として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の getSampleDouble
パラメータ:
x, 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 がスローされることがあります。

オーバーライド:
クラス ComponentSampleModel 内の getSamples
パラメータ:
x, y - 左上のピクセル位置の座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 返されるバンド
iArray - null でない場合、この配列内のサンプルを返す
data - イメージデータを格納する DataBuffer
戻り値:
指定された領域内にあるピクセルの指定されたバンド内のサンプル
関連項目:
setSamples(int, int, int, int, int, int[], 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, y - ピクセル位置の座標
obj - null でない場合は、このオブジェクト内のプリミティブ配列を返す
data - イメージデータを格納する DataBuffer
関連項目:
getDataElements(int, int, Object, DataBuffer)

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
サンプルの int 配列を入力として、DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の setPixel
パラメータ:
x, y - ピクセル位置の座標
iArray - int 配列内の入力サンプル
data - イメージデータを格納する DataBuffer
関連項目:
getPixel(int, int, int[], DataBuffer)

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] iArray,
                      DataBuffer data)
配列要素ごとに 1 つのサンプルが格納されている int 配列から、ピクセルの矩形のすべてのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の setPixels
パラメータ:
x, y - 左上のピクセル位置の座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - int 配列内の入力サンプル
data - イメージデータを格納する DataBuffer
関連項目:
getPixels(int, int, int, int, int[], DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
int を入力とし、DataBuffer 内の (x, y) に位置するピクセルの、指定したバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の setSample
パラメータ:
x, y - ピクセル位置の座標
b - 設定対象のバンド
s - int での入力サンプル
data - イメージデータを格納する DataBuffer
関連項目:
getSample(int, int, int, DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      float s,
                      DataBuffer data)
float を入力とし、DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の setSample
パラメータ:
x, y - ピクセル位置の座標
b - 設定対象のバンド
s - float での入力サンプル
data - イメージデータを格納する DataBuffer
関連項目:
getSample(int, int, int, DataBuffer)

setSample

public void setSample(int x,
                      int y,
                      int b,
                      double s,
                      DataBuffer data)
double を入力とし、DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス ComponentSampleModel 内の setSample
パラメータ:
x, y - ピクセル位置の座標
b - 設定対象のバンド
s - double での入力サンプル
data - イメージデータを格納する DataBuffer
関連項目:
getSample(int, int, int, 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, y - 左上のピクセル位置の座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 設定対象のバンド
iArray - 入力サンプル配列
data - イメージデータを格納する DataBuffer
関連項目:
getSamples(int, int, int, int, int, int[], DataBuffer)

hashCode

public int hashCode()
クラス Object の記述:
オブジェクトのハッシュコード値を返します。このメソッドは、java.util.Hashtable によって提供されるようなハッシュテーブルで使用するために用意されています。

hashCode メソッドの一般的な規則を次に示します。

できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。通常、これはオブジェクトの内部アドレスを整数値に変換する形で実装されますが、そのような実装テクニックは JavaTM プログラミング言語では不要です。

オーバーライド:
クラス ComponentSampleModel 内の hashCode
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。