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
ArrayIndexOutOfBoundsException
- 指定された座標が範囲外にある場合。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メソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。 (これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装テクニックはJava™プログラミング言語では必要ありません。)
hashCode
、クラスObject
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。