public class ComponentSampleModel extends SampleModel
DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT を使用) で格納できる符号なし整数値を各サンプルに持つイメージデータ、16 ビット (DataBuffer.TYPE_SHORT を使用) で格納できる符号付き整数値を各サンプルに持つデータ、または符号付き float 型または double 型の数値 (それぞれ DataBuffer.TYPE_FLOAT または DataBuffer.TYPE_DOUBLE を使用) を各サンプルに持つデータを表すことができます。このとき、指定された ComponentSampleModel のすべてのサンプルも、同じ精度で格納されます。すべてのストライド、およびオフセットは、負でない数値とする必要があります。このクラスは、TYPE_BYTE、TYPE_USHORT、TYPE_SHORT、TYPE_INT、TYPE_FLOAT、および TYPE_DOUBLE をサポートします。| 修飾子と型 | フィールドと説明 |
|---|---|
protected int[] |
bandOffsets
データ配列要素にあるすべてのバンドのオフセットです。
|
protected int[] |
bankIndices
イメージデータのバンドを格納する各バンクのインデックスです。
|
protected int |
numBands
この
ComponentSampleModel 内のバンド数です。 |
protected int |
numBanks
この
ComponentSampleModel 内のバンク数です。 |
protected int |
pixelStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) のピクセルストライドです。
|
protected int |
scanlineStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) の走査線ストライドです。
|
dataType, height, width| コンストラクタと説明 |
|---|
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)
指定されたパラメータで、ComponentSampleModel を構築します。
|
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)
指定されたパラメータで、ComponentSampleModel を構築します。
|
| 修飾子と型 | メソッドと説明 |
|---|---|
SampleModel |
createCompatibleSampleModel(int w, int h)
指定された幅と高さを持つ新しい
ComponentSampleModel を作成します。 |
DataBuffer |
createDataBuffer()
この
ComponentSampleModel に対応する DataBuffer を構築します。 |
SampleModel |
createSubsetSampleModel(int[] bands)
この ComponentSampleModel のサブセットを持つ、新しい ComponentSampleModel を構築します。
|
boolean |
equals(Object o)
このオブジェクトと他のオブジェクトが等しいかどうかを示します。
|
int[] |
getBandOffsets()
すべてのバンドについて、バンドのオフセットを返します。
|
int[] |
getBankIndices()
すべてのバンクについて、バンクのインデックスを返します。
|
Object |
getDataElements(int x, int y, Object obj, DataBuffer data)
TransferType 型のプリミティブ配列内の 1 つのピクセルのデータを返します。 |
int |
getNumDataElements()
getDataElements(int, int, Object, DataBuffer) メソッドと setDataElements(int, int, Object, DataBuffer) メソッドで、1 つのピクセルを転送するために必要なデータ要素の数を返します。 |
int |
getOffset(int x, int y)
ピクセル (x, y) の最初のバンドのオフセットを返します。
|
int |
getOffset(int x, int y, int b)
ピクセル (x, y) のバンド b のオフセットを返します。
|
int[] |
getPixel(int x, int y, int[] iArray, DataBuffer data)
指定されたピクセルのすべてのサンプルを int 配列として返します。配列要素にサンプル 1 個が対応します。
|
int[] |
getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
int 配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに 1 つのサンプルが返されます。
|
int |
getPixelStride()
この ComponentSampleModel のピクセルストライドを返します。
|
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 個が対応します。
|
int[] |
getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。
|
int |
getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。
|
int |
getScanlineStride()
この ComponentSampleModel の走査線ストライドを返します。
|
int |
hashCode()
オブジェクトのハッシュコード値を返します。
|
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 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。
|
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamplesprotected int[] bandOffsets
protected int[] bankIndices
protected int numBands
ComponentSampleModel 内のバンド数です。protected int numBanks
ComponentSampleModel 内のバンク数です。protected int scanlineStride
protected int pixelStride
public ComponentSampleModel(int dataType,
int w,
int h,
int pixelStride,
int scanlineStride,
int[] bandOffsets)
dataType - サンプル格納用のデータ形式w - 記述されたイメージデータの領域の幅 (単位はピクセル)h - 記述されたイメージデータの領域の高さ (単位はピクセル)pixelStride - 記述されるイメージデータの領域のピクセルストライドscanlineStride - 記述されるイメージデータの領域のラインストライドbandOffsets - すべてのバンドのオフセットIllegalArgumentException - w または h が 0 以下である場合IllegalArgumentException - pixelStride が 0 より小さい場合IllegalArgumentException - scanlineStride が 0 より小さい場合IllegalArgumentException - numBands が 1 より小さい場合IllegalArgumentException - w と h の積が Integer.MAX_VALUE より大きい場合IllegalArgumentException - dataType がサポートされているデータ型でない場合public ComponentSampleModel(int dataType,
int w,
int h,
int pixelStride,
int scanlineStride,
int[] bankIndices,
int[] bandOffsets)
dataType - サンプル格納用のデータ形式w - 記述されたイメージデータの領域の幅 (単位はピクセル)h - 記述されたイメージデータの領域の高さ (単位はピクセル)pixelStride - 記述されるイメージデータの領域のピクセルストライドscanlineStride - 記述されるイメージデータの領域のラインストライドbankIndices - すべてのバンドのバンクインデックスbandOffsets - すべてのバンドのバンドオフセットIllegalArgumentException - w または h が 0 以下である場合IllegalArgumentException - pixelStride が 0 より小さい場合IllegalArgumentException - scanlineStride が 0 より小さい場合IllegalArgumentException - bankIndices の長さが bankOffsets の長さと等しくない場合IllegalArgumentException - bandIndices のバンクインデックスのいずれかが 0 より小さい場合IllegalArgumentException - dataType がサポートされているデータ型でない場合public SampleModel createCompatibleSampleModel(int w, int h)
ComponentSampleModel を作成します。新しい SampleModel は、この SampleModel と同じ数のバンド、ストレージデータ型、インタリーブ化方式、およびピクセルストライドを持ちます。createCompatibleSampleModel、クラス: SampleModelw - 結果として得られる SampleModel の幅h - 結果として得られる SampleModel の高さComponentSampleModelIllegalArgumentException - w または h が 0 以下である場合public SampleModel createSubsetSampleModel(int[] bands)
createSubsetSampleModel、クラス: SampleModelbands - この ComponentSampleModel のバンドのサブセットComponentSampleModel のバンドのサブセットで作成された ComponentSampleModel。public DataBuffer createDataBuffer()
ComponentSampleModel に対応する DataBuffer を構築します。DataBuffer のデータ型、バンク数、およびサイズは、この ComponentSampleModel と矛盾しません。createDataBuffer、クラス: SampleModelComponentSampleModel とデータ型、バンク数、およびサイズが同じ DataBuffer。public int getOffset(int x,
int y)
DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
data.getElem(csm.getOffset(x, y));
x - ピクセルの X 位置y - ピクセルの Y 位置public int getOffset(int x,
int y,
int b)
b のサンプルは、DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
data.getElem(csm.getOffset(x, y, b));
x - 指定されたピクセルの X 位置y - 指定されたピクセルの Y 位置b - 指定されたバンドpublic final int[] getSampleSize()
getSampleSize、クラス: SampleModelpublic final int getSampleSize(int band)
getSampleSize、クラス: SampleModelband - 指定されたバンドpublic final int[] getBankIndices()
public final int[] getBandOffsets()
public final int getScanlineStride()
ComponentSampleModel の走査線ストライド。public final int getPixelStride()
ComponentSampleModel のピクセルストライド。public final int getNumDataElements()
getDataElements(int, int, Object, DataBuffer) メソッドと setDataElements(int, int, Object, DataBuffer) メソッドで、1 つのピクセルを転送するために必要なデータ要素の数を返します。ComponentSampleModel では、これはバンド数と等しくなります。getNumDataElements、クラス: SampleModelgetDataElements メソッドと setDataElements メソッドで 1 ピクセルを転送するために必要なデータ要素の数。SampleModel.getNumDataElements(), SampleModel.getNumBands()public Object getDataElements(int x, int y, Object obj, DataBuffer data)
TransferType 型のプリミティブ配列内の 1 つのピクセルのデータを返します。ComponentSampleModel では、これはデータ型と等しくなり、サンプルが配列要素ごとに 1 個ずつ返されます。通常は、Object が自動的に作成され、正しい基本データ型になるように、obj には null が渡されます。
次のコードは、ComponentSampleModel csm1 によってストレージレイアウトが記述されている DataBuffer db1 から、ComponentSampleModel csm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを転送する例です。この転送方法は、getPixel および setPixel を使う方法よりも通常効率的です。
ComponentSampleModel csm1, csm2;
DataBufferInt db1, db2;
csm2.setDataElements(x, y,
csm1.getDataElements(x, y, null, db1), db2);
SampleModel オブジェクトのバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferType が同じである場合、2 つの DataBuffer/SampleModel ペア間の転送には、getDataElements および setDataElements を使用するのが適切です。
obj が null でない場合は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj が null でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
getDataElements、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標obj - null でない場合は、ピクセルデータが返されるプリミティブ配列data - イメージデータを格納する DataBufferNullPointerException - data が null の場合。ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、または obj が小さすぎて出力を保持できない場合。setDataElements(int, int, Object, DataBuffer)public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。getPixel、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標iArray - null でない場合、この配列内のサンプルを返しますdata - イメージデータを格納する DataBufferNullPointerException - data が null の場合。ArrayIndexOutOfBoundsException - 座標が境界内に存在しない場合、または iArray が小さすぎて出力を保持できない場合。setPixel(int, int, int[], DataBuffer)public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。getPixels、クラス: SampleModelx - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - null でない場合、この配列内のサンプルを返しますdata - イメージデータを格納する DataBuffersetPixels(int, int, int, int, int[], DataBuffer)public int getSample(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。getSample、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータを格納する DataBuffersetSample(int, int, int, int, DataBuffer)public float getSampleFloat(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。getSampleFloat、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータを格納する DataBufferpublic double getSampleDouble(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。getSampleDouble、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータを格納する DataBufferpublic int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。getSamples、クラス: SampleModelx - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 返されるバンドiArray - null でない場合、この配列内のサンプルを返すdata - イメージデータを格納する DataBuffersetSamples(int, int, int, int, int, int[], DataBuffer)public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer の 1 つのピクセルのデータを、TransferType 型のプリミティブ配列から設定します。ComponentSampleModel では、これはデータ型と同じになり、サンプルは各配列要素に 1 個ずつ転送されます。
次のコードは、ComponentSampleModel csm1 によってストレージレイアウトが記述されている DataBuffer db1 から、ComponentSampleModel csm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを転送する例です。この転送方法は、getPixel および setPixel を使う方法よりも通常効率的です。
ComponentSampleModel csm1, csm2;
DataBufferInt db1, db2;
csm2.setDataElements(x, y, csm1.getDataElements(x, y, null, db1),
db2);
SampleModel オブジェクトのバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferType が同じである場合、2 つの DataBuffer/SampleModel ペア間の転送には、getDataElements および setDataElements を使用するのが適切です。
obj が TransferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
setDataElements、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標obj - ピクセルデータを格納するプリミティブ配列data - イメージデータを格納する DataBuffergetDataElements(int, int, Object, DataBuffer)public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。setPixel、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標iArray - int 配列形式の入力サンプルdata - イメージデータを格納する DataBuffergetPixel(int, int, int[], DataBuffer)public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。setPixels、クラス: SampleModelx - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - int 配列形式の入力サンプルdata - イメージデータを格納する DataBuffergetPixels(int, int, int, int, int[], DataBuffer)public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
DataBuffer の (x,y) に位置するピクセルの、指定されたバンドのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。setSample、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 設定されるバンドs - int の入力サンプルdata - イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)public void setSample(int x,
int y,
int b,
float s,
DataBuffer data)
DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。setSample、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 設定されるバンドs - float での入力サンプルdata - イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)public void setSample(int x,
int y,
int b,
double s,
DataBuffer data)
DataBuffer 内の (x, y) に位置するピクセルの、指定されたバンド内のサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。setSample、クラス: SampleModelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 設定されるバンドs - double での入力サンプルdata - イメージデータを格納する DataBuffergetSample(int, int, int, DataBuffer)public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。setSamples、クラス: SampleModelx - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 設定されるバンドiArray - int 配列形式の入力サンプルdata - イメージデータを格納する DataBuffergetSamples(int, int, int, int, int, int[], DataBuffer)public boolean equals(Object o)
Object
equals メソッドは、null 以外のオブジェクト参照での同値関係を実装します。
x について、x.equals(x) は true を返します。
x および y について、y.equals(x) が true を返す場合に限り、x.equals(y) は true を返します。
x、y、および z について、x.equals(y) が true を返し、y.equals(z) が true を返す場合、x.equals(z) は true を返します。
x および y について、x.equals(y) の複数の呼び出しは、このオブジェクトに対する equals による比較で使われた情報が変更されていなければ、一貫して true を返すか、一貫して false を返します。
x について、x.equals(null) は false を返します。
Object クラスの equals メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、null 以外の参照値 x と y について、このメソッドは x と y が同じオブジェクトを参照する (x == y が true) 場合にだけ true を返します。
通常、このメソッドをオーバーライドする場合は、hashCode メソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という hashCode メソッドの汎用規約に従う必要があることに留意してください。
equals、クラス: Objecto - 比較対象の参照オブジェクト。true、それ以外の場合は false。Object.hashCode()、HashMappublic int hashCode()
ObjectHashMap によって提供されるハッシュテーブルなどの、ハッシュテーブルの利点のためにサポートされています。
hashCode の一般的な規則は次のとおりです。
equals の比較で使用される情報が変更されていなければ、hashCode メソッドは常に同じ整数を返す必要があります。ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。
equals(Object) メソッドに従って 2 つのオブジェクトが等しい場合は、2 つの各オブジェクトに対する hashCode メソッドの呼び出しによって同じ整数の結果が生成される必要があります。
Object.equals(java.lang.Object) メソッドに従って 2 つのオブジェクトが等しくない場合は、2 つの各オブジェクトに対する hashCode メソッドの呼び出しによって異なる整数の結果が生成される必要はありません。ただし、プログラマは、等しくないオブジェクトに対して異なる整数の結果を生成すると、ハッシュテーブルのパフォーマンスが向上する可能性があることに注意するようにしてください。
クラス Object によって定義された hashCode メソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。(これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装テクニックは JavaTM プログラミング言語では必要ありません。)
hashCode、クラス: ObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object) バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.