|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.awt.image.SampleModel
java.awt.image.ComponentSampleModel
public class ComponentSampleModel
このクラスは、DataBuffer のデータ要素 1 つに 1 つずつピクセルを形成する各サンプルが格納されているイメージデータを表します。DataBuffer は、1 ピクセルを形成する N 個のサンプルを、N 個の別個のデータ配列要素に格納します。異なるバンドが、それぞれ DataBuffer の別のバンクに格納される場合があります。イメージデータを直接処理できるように、アクセス用メソッドが提供されています。このクラスは、各種のインタリーブ (バンドインタリーブ、走査線インタリーブ、およびピクセルインタリーブなど) をサポート可能です。ピクセルストライドは、同じ走査線上の同じバンドにある 2 つのサンプルの間にあるデータ配列要素数です。走査線ストライドは、指定されたサンプルと次の走査線の同じ列の対応するサンプルとの間のデータ配列要素の数です。バンドオフセットは、各バンドが格納されている DataBuffer のバンクにある最初のデータ配列要素からそのバンドの最初のサンプルまでのデータ配列要素数を示します。バンドには 0 から N-1 までの番号が付けられています。 このクラスは、8 ビット、16 ビット、または 32 ビット (それぞれ、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 をサポートします。
PixelInterleavedSampleModel,
BandedSampleModel| フィールドの概要 | |
|---|---|
protected int[] |
bandOffsets
データ配列要素にあるすべてのバンドのオフセットです。 |
protected int[] |
bankIndices
イメージデータのバンドを格納する各バンクのインデックスです。 |
protected int |
numBands
この ComponentSampleModel 内のバンド数です。 |
protected int |
numBanks
この ComponentSampleModel 内のバンク数です。 |
protected int |
pixelStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) のピクセルストライドです。 |
protected int |
scanlineStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) の走査線ストライドです。 |
| クラス java.awt.image.SampleModel から継承されたフィールド |
|---|
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)
1 ピクセルのデータを TransferType 型のプリミティブ配列として返します。 |
int |
getNumDataElements()
getDataElements メソッドと setDataElements メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返すComponentSampleModel では、これはバンド数と等しくなります。 |
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 配列として返します。 |
int[] |
getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
int 配列の指定されたピクセルの矩形のすべてのサンプルを返します。 |
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 配列として返します。 |
int[] |
getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。 |
int |
getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。 |
int |
getScanlineStride()
この ComponentSampleModel の走査線ストライドを返します。 |
int |
hashCode()
オブジェクトのハッシュコード値を返します。 |
void |
setDataElements(int x,
int y,
Object obj,
DataBuffer data)
指定された DataBuffer にある単一ピクセルのデータを、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.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 |
| フィールドの詳細 |
|---|
protected 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 と同じ数のバンド、ストレージデータ型、インタリーブ化方式、およびピクセルストライドを持ちます。
SampleModel 内の createCompatibleSampleModelw - 結果として返された SampleModel の幅h - 結果として返された SampleModel の高さ
ComponentSampleModel
IllegalArgumentException - w または
h が 0 以下である場合public SampleModel createSubsetSampleModel(int[] bands)
SampleModel 内の createSubsetSampleModelbands - この ComponentSampleModel の
バンドのサブセット
ComponentSampleModel のバンドのサブセットで
作成された ComponentSampleModelpublic DataBuffer createDataBuffer()
ComponentSampleModel と対応する DataBuffer を作成します。DataBuffer のデータ型、バンク数、およびサイズは、この ComponentSampleModel と矛盾しません。
SampleModel 内の createDataBufferComponentSampleModel と
データ型、バンク数、およびサイズが同じ
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()
SampleModel 内の getSampleSizepublic final int getSampleSize(int band)
SampleModel 内の getSampleSizeband - 指定されたバンド
public final int[] getBankIndices()
public final int[] getBandOffsets()
public final int getScanlineStride()
ComponentSampleModel の走査線ストライドpublic final int getPixelStride()
ComponentSampleModel のピクセルストライドpublic final int getNumDataElements()
getDataElements メソッドと setDataElements メソッドにより 1 ピクセルを転送するために必要なデータ要素の数を返すComponentSampleModel では、これはバンド数と等しくなります。
SampleModel 内の getNumDataElementsgetDataElements メソッドと setDataElements メソッドで
1 ピクセルを転送するために必要な
データ要素の数SampleModel.getNumDataElements(),
SampleModel.getNumBands()
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
TransferType 型のプリミティブ配列として返します。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);
2 つの SampleModel オブジェクトのバンド数が同じで、対応するバンドの 1 サンプルあたりのビット数が同じで、TransferType も同じ場合は、2 組の DataBuffer と SampleModel のペアの間で転送を行うには、getDataElements および setDataElements を使用するのが適切です。
obj が null でない場合は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj が null でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の getDataElementsx - ピクセル位置の X 座標y - ピクセル位置の Y 座標obj - null でない場合は、
ピクセルデータが返されるプリミティブ配列data - イメージデータを格納する DataBuffer
NullPointerException - データが null の場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、
または obj が出力を保持するには小さすぎる場合setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getPixelx - ピクセル位置の X 座標y - ピクセル位置の Y 座標iArray - null でない場合、この配列内のサンプルを返すdata - イメージデータを格納する DataBuffer
NullPointerException - データが null の場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、
または iArray が出力を保持するには小さすぎる場合setPixel(int, int, int[], DataBuffer)
public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getPixelsx - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - null でない場合、この配列内のサンプルを返すdata - イメージデータを格納する DataBuffer
setPixels(int, int, int, int, int[], DataBuffer)
public int getSample(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSamplex - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータを格納する DataBuffer
setSample(int, int, int, int, DataBuffer)
public float getSampleFloat(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSampleFloatx - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータを格納する DataBuffer
public double getSampleDouble(int x,
int y,
int b,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSampleDoublex - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータを格納する DataBuffer
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の getSamplesx - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 返されるバンドiArray - null でない場合、この配列内の
サンプルを返すdata - イメージデータを格納する DataBuffer
setSamples(int, int, int, int, int, int[], DataBuffer)
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
DataBuffer にある単一ピクセルのデータを、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);
2 つの SampleModel オブジェクトのバンド数が同じで、対応するバンドの 1 サンプルあたりのビット数が同じで、TransferType も同じ場合は、2 組の DataBuffer と SampleModel のペアの間で転送を行うには、getDataElements および setDataElements を使用するのが適切です。
obj が transferType 型のプリミティブ配列でない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。
SampleModel 内の setDataElementsx - ピクセル位置の X 座標y - ピクセル位置の Y 座標obj - ピクセルデータを格納するプリミティブ配列data - イメージデータを格納する DataBuffergetDataElements(int, int, Object, DataBuffer)
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
DataBuffer 内のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
SampleModel 内の setPixelx - ピクセル位置の 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 がスローされることがあります。
SampleModel 内の setPixelsx - 左上のピクセル位置の 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 がスローされることがあります。
SampleModel 内の setSamplex - ピクセル位置の 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 がスローされることがあります。
SampleModel 内の setSamplex - ピクセル位置の 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 がスローされることがあります。
SampleModel 内の setSamplex - ピクセル位置の 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 がスローされることがあります。
SampleModel 内の setSamplesx - 左上のピクセル位置の 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 について、x.equals(y) は、y.equals(x) が true を返す場合だけ true を返す
x、y、z について、x.equals(y) が true を返し、かつ y.equals(z) が true を返す場合に、x.equals(z) は true を返す
x および y について、x.equals(y) を複数呼び出すと常に true を返すか、常に false を返す。 これは、オブジェクトに対する equals による比較で使われた情報が変更されていないことが条件である
x について、x.equals(null) は false を返す
Object クラスの equals メソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。 つまり、null 以外の参照値 x と y について、このメソッドは x と y が同じオブジェクトを参照する (x == y が true) 場合にだけ true を返します。
通常、このメソッドをオーバーライドする場合は、hashCode メソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という hashCode メソッドの汎用規約に従う必要があることに留意してください。
Object 内の equalso - 比較対象の参照オブジェクト
true、そうでない場合は falseObject.hashCode(),
Hashtablepublic int hashCode()
Object の記述:java.util.Hashtable によって提供されるようなハッシュテーブルで使用するために用意されています。
hashCode メソッドの一般的な規則を次に示します。
hashCode メソッドを呼び出しても結果は同じ整数値にならなければならない
Object.equals(java.lang.Object) メソッドで 2 つのオブジェクトが等価でないとされた場合は、これらのオブジェクトに対して hashCode メソッドを呼び出したときに、結果が異なる整数値にならなくてもかまわない。しかし、等しくないオブジェクトについては異なる整数値が生成されるようにすれば、ハッシュテーブルのパフォーマンスを上げることができる
できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。通常、これはオブジェクトの内部アドレスを整数値に変換する形で実装されますが、そのような実装テクニックは JavaTM プログラミング言語では不要です。
Object 内の hashCodeObject.equals(java.lang.Object),
Hashtable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。