public class MultiPixelPackedSampleModel extends SampleModel
MultiPixelPackedSampleModel
クラスは、単一バンド化されたイメージを表現し、複数の単一サンプルピクセルを 1 つのデータ要素にパックできます。ピクセルは、複数のデータ要素にまたがることはできません。データ型は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT です。各ピクセルは 2 のべき乗のビット数でなければならず、2 のべき乗個のピクセルが、1 つのデータ要素にぴったり収まらなければいけません。ピクセルビットストライドは、1 ピクセルあたりのビット数と同じです。走査線ストライドはデータ要素内にあり、最後のいくつかのデータ要素が未使用のピクセルでパディングされます。データビットオフセットは、DataBuffer
の先頭から最初のピクセルまでのビット単位のオフセットであり、ピクセルビットストライドの倍数です。
次のコード例は、DataBuffer
の data
からピクセル x, y
のビットを抽出し、dataType
型のデータ要素にピクセルデータを格納します。
int dataElementSize = DataBuffer.getDataTypeSize(dataType); int bitnum = dataBitOffset + x*pixelBitStride; int element = data.getElem(y*scanlineStride + bitnum/dataElementSize); int shift = dataElementSize - (bitnum & (dataElementSize-1)) - pixelBitStride; int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
dataType, height, numBands, width
コンストラクタと説明 |
---|
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
指定されたデータ型、幅、高さ、および 1 ピクセルあたりのビット数を持つ
MultiPixelPackedSampleModel を構築します。 |
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
指定されたデータ型、幅、高さ、1 ピクセルあたりのビット数、走査線ストライド、およびデータビットオフセットを持つ
MultiPixelPackedSampleModel を構築します。 |
修飾子と型 | メソッドと説明 |
---|---|
SampleModel |
createCompatibleSampleModel(int w, int h)
指定された幅と高さを持つ新しい
MultiPixelPackedSampleModel を作成します。 |
DataBuffer |
createDataBuffer()
この
MultiPixelPackedSampleModel に対応する DataBuffer を作成します。 |
SampleModel |
createSubsetSampleModel(int[] bands)
この
MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel を生成します。 |
boolean |
equals(Object o)
このオブジェクトと他のオブジェクトが等しいかどうかを示します。
|
int |
getBitOffset(int x)
走査線の
x 番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。 |
int |
getDataBitOffset()
データビットオフセットをビット数で返します。
|
Object |
getDataElements(int x, int y, Object obj, DataBuffer data)
transferType 型のプリミティブ配列内の 1 つのピクセルのデータを返します。
|
int |
getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) メソッドおよび setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) メソッドを使って 1 ピクセル転送するのに必要なデータ要素の数を返します。 |
int |
getOffset(int x, int y)
ピクセル (x, y) のデータ配列要素でのオフセットを返します。
|
int[] |
getPixel(int x, int y, int[] iArray, DataBuffer data)
int 配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。 |
int |
getPixelBitStride()
ピクセルビットストライドをビット数で返します。
|
int |
getSample(int x, int y, int b, DataBuffer data)
(x, y) に位置するピクセルの、指定されたバンド内のサンプルを
int として返します。 |
int[] |
getSampleSize()
すべてのバンドのサンプルあたりのビット数を返します。
|
int |
getSampleSize(int band)
指定されたバンドのサンプルあたりのビット数を返します。
|
int |
getScanlineStride()
走査線ストライドを返します。
|
int |
getTransferType()
getDataElements メソッドと setDataElements メソッドによりピクセルを転送するために使う TransferType を返します。 |
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 |
setSample(int x, int y, int b, int s, DataBuffer data)
int を入力とし、DataBuffer の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。 |
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getSamples, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setPixels, setSample, setSample, setSamples, setSamples, setSamples
public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
MultiPixelPackedSampleModel
を構築します。dataType
- サンプル格納用のデータ形式w
- 記述されるイメージデータの領域の幅 (ピクセル単位)h
- 記述されるイメージデータの領域の高さ (ピクセル単位)numberOfBits
- ピクセルごとのビット数IllegalArgumentException
- dataType
が DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
、または DataBuffer.TYPE_INT
のいずれでもない場合public MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
MultiPixelPackedSampleModel
を構築します。dataType
- サンプル格納用のデータ形式w
- 記述されるイメージデータの領域の幅 (ピクセル単位)h
- 記述されるイメージデータの領域の高さ (ピクセル単位)numberOfBits
- ピクセルごとのビット数scanlineStride
- イメージデータの走査線ストライドdataBitOffset
- 記述されているイメージデータ領域のデータビットオフセットRasterFormatException
- 1 ピクセルあたりのビット数が 2 のべき乗でない場合、あるいは 2 のべき乗個のピクセルが 1 データ要素に収まらない場合。IllegalArgumentException
- w
または h
が 0 以下である場合IllegalArgumentException
- dataType
が DataBuffer.TYPE_BYTE
、DataBuffer.TYPE_USHORT
、または DataBuffer.TYPE_INT
のいずれでもない場合public SampleModel createCompatibleSampleModel(int w, int h)
MultiPixelPackedSampleModel
を作成します。新しい MultiPixelPackedSampleModel
のストレージデータ型と 1 ピクセルあたりのビット数は、この MultiPixelPackedSampleModel
と同じです。createCompatibleSampleModel
、クラス: SampleModel
w
- 指定された幅h
- 指定された高さMultiPixelPackedSampleModel
とストレージデータ型および 1 ピクセルあたりのビット数が同じ SampleModel
。IllegalArgumentException
- w
または h
が 0 以下である場合public DataBuffer createDataBuffer()
MultiPixelPackedSampleModel
に対応する DataBuffer
を作成します。DataBuffer
オブジェクトのデータ型とサイズは、この MultiPixelPackedSampleModel
と同じです。DataBuffer
は 1 つのバンクを持ちます。createDataBuffer
、クラス: SampleModel
MultiPixelPackedSampleModel
とデータ型およびサイズが同じ DataBuffer
。public int getNumDataElements()
getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
メソッドおよび setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
メソッドを使って 1 ピクセル転送するのに必要なデータ要素の数を返します。MultiPixelPackedSampleModel
の場合は 1 になります。getNumDataElements
、クラス: SampleModel
SampleModel.getDataElements(int, int, Object, DataBuffer)
, SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
, SampleModel.setDataElements(int, int, Object, DataBuffer)
, SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
, SampleModel.getTransferType()
public int[] getSampleSize()
getSampleSize
、クラス: SampleModel
public int getSampleSize(int band)
getSampleSize
、クラス: SampleModel
band
- 指定されたバンドpublic int getOffset(int x, int y)
x
- 指定されたピクセルの X 座標y
- 指定されたピクセルの Y 座標public int getBitOffset(int x)
x
番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。このオフセットは、すべての走査線で同じです。x
- 指定されたピクセルpublic int getScanlineStride()
MultiPixelPackedSampleModel
の走査線ストライド。public int getPixelBitStride()
MultiPixelPackedSampleModel
の pixelBitStride
。public int getDataBitOffset()
MultiPixelPackedSampleModel
の dataBitOffset
。public int getTransferType()
getDataElements
メソッドと setDataElements
メソッドによりピクセルを転送するために使う TransferType を返します。TransferType は、ストレージデータ型と同じでも、異なっていてもかまいません。TransferType は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のいずれかになります。getTransferType
、クラス: SampleModel
SampleModel.getDataElements(int, int, Object, DataBuffer)
、SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
、SampleModel.setDataElements(int, int, Object, DataBuffer)
、SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
、SampleModel.getNumDataElements()
、DataBuffer
public SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModel
のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel
を生成します。MultiPixelPackedSampleModel
はバンドを 1 つしか持たないので、bands 引数は長さ 1 でゼロ番目のバンドを示す必要があります。createSubsetSampleModel
、クラス: SampleModel
bands
- 指定されたバンドMultiPixelPackedSampleModel
のバンドのサブセットを持つ新しい SampleModel
。RasterFormatException
- 要求されたバンド数が 1 でない場合。IllegalArgumentException
- w
または h
が 0 以下である場合public int getSample(int x, int y, int b, DataBuffer data)
int
として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。getSample
、クラス: SampleModel
x
- 指定されたピクセルの X 座標y
- 指定されたピクセルの Y 座標b
- 返されるバンド (0 と見なされる)data
- イメージデータを格納する DataBuffer
ArrayIndexOutOfBoundException
- 指定された座標が範囲外にある場合。setSample(int, int, int, int, DataBuffer)
public void setSample(int x, int y, int b, int s, DataBuffer data)
int
を入力とし、DataBuffer
の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。setSample
、クラス: SampleModel
x
- 指定されたピクセルの X 座標y
- 指定されたピクセルの Y 座標b
- 返されるバンド (0 と見なされる)s
- int
の入力サンプルdata
- イメージデータの格納先の DataBuffer
ArrayIndexOutOfBoundsException
- 座標が範囲外にある場合。getSample(int, int, int, DataBuffer)
public Object getDataElements(int x, int y, Object obj, DataBuffer data)
MultiPixelPackedSampleModel
の場合、配列は 1 つの要素を持ち、型は 1 つのピクセルを格納できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のうちの最小のものになります。一般に、obj
は null
で渡されるので、Object
は自動的に作成され、正しい基本データ型になります。
次のコードは、MultiPixelPackedSampleModel
mppsm1
によってストレージレイアウトが記述されている DataBuffer
db1
から、MultiPixelPackedSampleModel
mppsm2
によってストレージレイアウトが記述されている DataBuffer
db2
へ、1 ピクセルのデータを転送する例です。この転送方法は、getPixel
または setPixel
を使う方法よりも通常効率的です。
MultiPixelPackedSampleModel mppsm1, mppsm2; DataBufferInt db1, db2; mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null, db1), db2);
SampleModels
のバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferType が同じである場合、2 つの DataBuffer/SampleModel
ペア間の転送には、getDataElements
/setDataElements
を使用するのが適切です。
obj
が null
でない場合は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException
がスローされます。座標が境界内にない場合や、obj
が null
でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException
がスローされます。
getDataElements
、クラス: SampleModel
x
- 指定されたピクセルの X 座標y
- 指定されたピクセルの Y 座標obj
- ピクセルデータを返すプリミティブ配列、または null
。data
- イメージデータを格納する DataBuffer
。Object
。ClassCastException
- obj
が TransferType 型のプリミティブ配列でなく、null
でもない場合ArrayIndexOutOfBoundsException
- 座標が境界内にない場合。または obj
が null
ではないかピクセルデータを保持するのに十分な大きさではない場合setDataElements(int, int, Object, DataBuffer)
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
int
配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。getPixel
、クラス: SampleModel
x
- 指定されたピクセルの X 座標y
- 指定されたピクセルの Y 座標iArray
返されるピクセルが格納される配列、または null
data
- イメージデータの格納先の DataBuffer
ArrayIndexOutOfBoundsException
- 座標が範囲外にある場合setPixel(int, int, int[], DataBuffer)
public void setDataElements(int x, int y, Object obj, DataBuffer data)
DataBuffer
の 1 つのピクセルのデータを、TransferType 型のプリミティブ配列から設定します。MultiPixelPackedSampleModel
の場合は、配列の先頭要素だけが有効なデータを保持し、型は 1 つのピクセルを保持できる DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、または DataBuffer.TYPE_INT のうちの最小のものになります。
次のコードは、MultiPixelPackedSampleModel
mppsm1
によってストレージレイアウトが記述されている DataBuffer
db1
から、MultiPixelPackedSampleModel
mppsm2
によってストレージレイアウトが記述されている DataBuffer
db2
へ、1 ピクセルのデータを転送する例です。この転送方法は、getPixel
または setPixel
を使う方法よりも通常効率的です。
MultiPixelPackedSampleModel mppsm1, mppsm2; DataBufferInt db1, db2; mppsm2.setDataElements(x, y, mppsm1.getDataElements(x, y, null, db1), db2);
SampleModel
オブジェクトのバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferType が同じである場合、2 つの DataBuffer/SampleModel
ペア間の転送には、getDataElements
/setDataElements
を使用するのが適切です。
obj
は、TransferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException
がスローされます。座標が境界内にない場合や、obj
がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException
がスローされます。
setDataElements
、クラス: SampleModel
x
- ピクセル位置の X 座標y
- ピクセル位置の Y 座標obj
- ピクセルデータを格納するプリミティブ配列data
- イメージデータを格納する DataBuffer
getDataElements(int, int, Object, DataBuffer)
public void setPixel(int x, int y, int[] iArray, DataBuffer data)
int
配列を入力とし、DataBuffer
のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException
がスローされます。setPixel
、クラス: SampleModel
x
- ピクセル位置の X 座標y
- ピクセル位置の Y 座標iArray
- int
配列の入力ピクセルdata
- イメージデータを格納する DataBuffer
getPixel(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
、クラス: Object
o
- 比較対象の参照オブジェクト。true
、それ以外の場合は false
。Object.hashCode()
、HashMap
public int hashCode()
Object
HashMap
によって提供されるハッシュテーブルなどの、ハッシュテーブルの利点のためにサポートされています。
hashCode
の一般的な規則は次のとおりです。
equals
の比較で使用される情報が変更されていなければ、hashCode
メソッドは常に同じ整数を返す必要があります。ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。
equals(Object)
メソッドに従って 2 つのオブジェクトが等しい場合は、2 つの各オブジェクトに対する hashCode
メソッドの呼び出しによって同じ整数の結果が生成される必要があります。
Object.equals(java.lang.Object)
メソッドに従って 2 つのオブジェクトが等しくない場合は、2 つの各オブジェクトに対する hashCode
メソッドの呼び出しによって異なる整数の結果が生成される必要はありません。ただし、プログラマは、等しくないオブジェクトに対して異なる整数の結果を生成すると、ハッシュテーブルのパフォーマンスが向上する可能性があることに注意するようにしてください。
クラス Object
によって定義された hashCode メソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。(これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装テクニックは JavaTM プログラミング言語では必要ありません。)
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.