JavaTM Platform
Standard Ed. 6

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 型のプリミティブ配列内の 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 配列として返します。
 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 内の 1 つのピクセルのデータを設定します。
 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 または hInteger.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 型のプリミティブ配列内の 1 つのピクセルのデータを返します。BandedSampleModel の場合、これは同じデータ型になり、サンプルは配列要素ごとに 1 つ返されます。通常は、Object が自動的に作成され、正しい基本データ型になるように、obj には null が渡されます。

次のコードは、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
戻り値:
指定されたピクセルのデータ
関連項目:
setDataElements(int, int, Object, 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
戻り値:
指定されたピクセルのサンプル
関連項目:
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 - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の 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 - ピクセル位置の X 座標
y - ピクセル位置の 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 - ピクセル位置の X 座標
y - ピクセル位置の Y 座標
b - 返されるバンド
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルの指定されたバンド内のサンプルを表す float 値

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
戻り値:
指定されたピクセルの指定されたバンド内のサンプルを表す 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 - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の 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 内の 1 つのピクセルのデータを設定します。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
関連項目:
getDataElements(int, int, Object, 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
関連項目:
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 - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の 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 - ピクセル位置の X 座標
y - ピクセル位置の 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 - ピクセル位置の X 座標
y - ピクセル位置の 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 - ピクセル位置の X 座標
y - ピクセル位置の 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 - 左上のピクセル位置の X 座標
y - 左上のピクセル位置の 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 Platform
Standard Ed. 6

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

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