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, setSamplespublic 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、クラスSampleModelw - 指定された幅h - 指定された高さMultiPixelPackedSampleModelとストレージ・データ型および1ピクセルあたりのビット数が同じSampleModel。IllegalArgumentException - wまたはhが0以下である場合public DataBuffer createDataBuffer()
MultiPixelPackedSampleModelに対応するDataBufferを作成します。 DataBufferオブジェクトのデータ型とサイズは、このMultiPixelPackedSampleModelと同じです。 DataBufferは1つのバンクを持ちます。 createDataBuffer、クラスSampleModelMultiPixelPackedSampleModelとデータ型およびサイズが同じ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、クラスSampleModelSampleModel.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、クラスSampleModelpublic int getSampleSize(int band)
getSampleSize、クラスSampleModelband - 指定されたバンド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、クラスSampleModelSampleModel.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()、DataBufferpublic SampleModel createSubsetSampleModel(int[] bands)
MultiPixelPackedSampleModelのバンドのサブセットを持つ新しいMultiPixelPackedSampleModelを生成します。 MultiPixelPackedSampleModelはバンドを1つしか持たないので、bands引数は長さ1でゼロ番目のバンドを示す必要があります。 createSubsetSampleModel、クラスSampleModelbands - 指定されたバンドMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいSampleModel。RasterFormatException - 要求されたバンド数が1でない場合。IllegalArgumentException - wまたはhが0以下である場合public int getSample(int x,
int y,
int b,
DataBuffer data)
intとして返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 getSample、クラスSampleModelx - 指定されたピクセルのX座標y - 指定されたピクセルのY座標b - 返されるバンド(0と見なされます)data - イメージ・データを格納するDataBufferArrayIndexOutOfBoundsException - 指定された座標が範囲外にある場合。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、クラスSampleModelx - 指定されたピクセルのX座標y - 指定されたピクセルのY座標b - 返されるバンド(0と見なされます)s - intの入力サンプルdata - イメージ・データの格納先のDataBufferArrayIndexOutOfBoundsException - 座標が範囲外にある場合。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、クラスSampleModelx - 指定されたピクセルの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、クラスSampleModelx - 指定されたピクセルのX座標y - 指定されたピクセルのY座標iArray返されるピクセルが格納される配列、またはnulldata - イメージ・データの格納先のDataBufferArrayIndexOutOfBoundsException - 座標が範囲外にある場合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、クラスSampleModelx - ピクセル位置のX座標y - ピクセル位置のY座標obj - ピクセル・データを格納するプリミティブ配列data - イメージ・データを格納するDataBuffergetDataElements(int, int, Object, DataBuffer)public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
int配列を入力とし、DataBufferのピクセルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。 setPixel、クラスSampleModelx - ピクセル位置のX座標y - ピクセル位置のY座標iArray - int配列の入力ピクセルdata - イメージ・データを格納するDataBuffergetPixel(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メソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。 (これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装テクニックはJava™プログラミング言語では必要ありません。)
hashCode、クラスObjectObject.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も参照してください。