public class SinglePixelPackedSampleModel extends SampleModel
TYPE_BYTE、TYPE_USHORT、TYPE_INTの各データ型をサポートします。 すべてのデータ配列要素は、DataBufferの最初のバンクに常駐します。 イメージ・データを直接操作できるように、アクセス用メソッドが提供されています。 走査線ストライドは、指定されたサンプルと次の走査線の同じ列の対応するサンプルとの間のデータ配列要素の数です。 ビット・マスクは、ピクセルのバンドを表すサンプルを抽出するのに必要なマスクです。 ビット・オフセットは、ピクセルのバンドを表すサンプルのデータ配列要素へのビット単位のオフセットです。
次のコードは、DataBuffer dataから、ピクセルx,yのバンドbを表すサンプルのビットを抽出する例です。
int sample = data.getElem(y * scanlineStride + x);
sample = (sample & bitMasks[b]) >>> bitOffsets[b];
dataType, height, numBands, width| コンストラクタ | 説明 |
|---|---|
SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks) |
bitMasks.lengthのバンドを使ってSinglePixelPackedSampleModelを構築します。
|
SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks) |
bitMasks.lengthのバンド、そしてscanlineStrideデータ配列要素と一致する走査線ストライドを使ってSinglePixelPackedSampleModelを構築します。
|
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
SampleModel |
createCompatibleSampleModel(int w, int h) |
指定された幅と高さを使って新しいSinglePixelPackedSampleModelを作成します。
|
DataBuffer |
createDataBuffer() |
このSinglePixelPackedSampleModelに対応するDataBufferを生成します。
|
SampleModel |
createSubsetSampleModel(int[] bands) |
このSinglePixelPackedSampleModelのバンドのサブセットを使って新しいSinglePixelPackedSampleModelを作成します。
|
boolean |
equals(Object o) |
このオブジェクトと他のオブジェクトが等しいかどうかを示します。
|
int[] |
getBitMasks() |
すべてのバンドのビット・マスクを返します。
|
int[] |
getBitOffsets() |
すべてのバンドのピクセルを表すデータ配列要素にビット・オフセットを返します。
|
Object |
getDataElements(int x, int y, Object obj, DataBuffer data) |
transferType型のプリミティブ配列内の1つのピクセルのデータを返します。
|
int |
getNumDataElements() |
getDataElementsメソッドおよびsetDataElementsメソッドを使って1ピクセル転送するのに必要なデータ要素の数を返します。
|
int |
getOffset(int x, int y) |
ピクセル(x, y)のデータ配列要素内のオフセットを返します。
|
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配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに1つのサンプルが返されます。
|
int |
getSample(int x, int y, int b, DataBuffer data) |
(x, y)に位置するピクセルの、指定されたバンド内のサンプルをintとして返します。
|
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() |
このSinglePixelPackedSampleModelの走査線ストライドを返します。
|
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, 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, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamplespublic SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks)
dataType - サンプルの格納のためのデータ型。w - 記述されたイメージ・データの領域の幅(単位はピクセル)。h - 記述されたイメージ・データの領域の高さ(単位はピクセル)。bitMasks - すべてのバンドのビット・マスク。IllegalArgumentException - dataTypeがDataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれでもない場合public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks)
dataType - サンプルの格納のためのデータ型。w - 記述されたイメージ・データの領域の幅(単位はピクセル)。h - 記述されたイメージ・データの領域の高さ(単位はピクセル)。scanlineStride - イメージ・データの走査線ストライド。bitMasks - すべてのバンドのビット・マスク。IllegalArgumentException - wまたはhが0以下である場合IllegalArgumentException - bitMaskのマスクが連続していない場合IllegalArgumentException - dataTypeがDataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれでもない場合public int getNumDataElements()
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 SampleModel createCompatibleSampleModel(int w, int h)
createCompatibleSampleModel、クラスSampleModelw - 結果として得られるSampleModelの幅h - 結果として得られるSampleModelの高さSinglePixelPackedSampleModel。IllegalArgumentException - wまたはhが0以下である場合public DataBuffer createDataBuffer()
createDataBuffer、クラスSampleModelSampleModelに対するDataBuffer。public int[] getSampleSize()
getSampleSize、クラスSampleModelpublic int getSampleSize(int band)
getSampleSize、クラスSampleModelband - 指定されたバンドpublic int getOffset(int x,
int y)
x,yが格納されているデータ要素は、次のようにSinglePixelPackedSampleModel sppsmを使ってDataBuffer dataから取り出すことができます。
data.getElem(sppsm.getOffset(x, y));
x - 指定されたピクセルのX座標y - 指定されたピクセルのY座標public int[] getBitOffsets()
public int[] getBitMasks()
public int getScanlineStride()
SinglePixelPackedSampleModelの走査線ストライド。public SampleModel createSubsetSampleModel(int[] bands)
createSubsetSampleModel、クラスSampleModelbands - このSampleModelのバンドのサブセットSampleModelのバンドのサブセットを持つSampleModel。RasterFormatException - bands引数の長さがサンプル・モデルのバンド数より大きい場合。public Object getDataElements(int x, int y, Object obj, DataBuffer data)
次のコードは、SinglePixelPackedSampleModel sppsm1によってストレージ・レイアウトが記述されているDataBuffer db1から、SinglePixelPackedSampleModel sppsm2によってストレージ・レイアウトが記述されているDataBuffer db2へ、1ピクセルのデータを転送する例です。 通常、この転送はgetPixelとsetPixelを使うよりも効率的です。
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.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 - イメージ・データを格納するDataBuffer。setDataElements(int, int, Object, DataBuffer)public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
getPixel、クラスSampleModelx - ピクセル位置のX座標。y - ピクセル位置のY座標。iArray - nullでない場合、この配列内のサンプルを返しますdata - イメージ・データを格納するDataBuffer。setPixel(int, int, int[], DataBuffer)public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
getPixels、クラスSampleModelx - 左上のピクセル位置の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)
getSample、クラスSampleModelx - ピクセル位置のX座標。y - ピクセル位置のY座標。b - 返されるバンド。data - イメージ・データを格納するDataBuffer。setSample(int, int, int, int, DataBuffer)public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
getSamples、クラスSampleModelx - 左上のピクセル位置の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)
次のコードは、SinglePixelPackedSampleModel sppsm1によってストレージ・レイアウトが記述されているDataBuffer db1から、SinglePixelPackedSampleModel sppsm2によってストレージ・レイアウトが記述されているDataBuffer db2へ、1ピクセルのデータを転送する例です。 通常、この転送はgetPixelとsetPixelを使うよりも効率的です。
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.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 - イメージ・データを格納するDataBuffer。getDataElements(int, int, Object, DataBuffer)public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
setPixel、クラスSampleModelx - ピクセル位置のX座標。y - ピクセル位置のY座標。iArray - int配列形式の入力サンプル。data - イメージ・データを格納するDataBuffer。getPixel(int, int, int[], DataBuffer)public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
setPixels、クラスSampleModelx - 左上のピクセル位置のX座標。y - 左上のピクセル位置のY座標。w - ピクセル矩形の幅。h - ピクセル矩形の高さ。iArray - int配列形式の入力サンプル。data - イメージ・データを格納するDataBuffer。getPixels(int, int, int, int, int[], DataBuffer)public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
setSample、クラスSampleModelx - ピクセル位置のX座標。y - ピクセル位置のY座標。b - 設定されるバンド。s - intの入力サンプル。data - イメージ・データを格納するDataBuffer。getSample(int, int, int, DataBuffer)public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
setSamples、クラスSampleModelx - 左上のピクセル位置のX座標。y - 左上のピクセル位置のY座標。w - ピクセル矩形の幅。h - ピクセル矩形の高さ。b - 設定されるバンド。iArray - int配列形式の入力サンプル。data - イメージ・データを格納するDataBuffer。getSamples(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メソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。 (これは通常、オブジェクトの内部アドレスを整数に変換することによって実装されますが、この実装テクニックは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も参照してください。