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);
 - 
フィールドのサマリー
- 
コンストラクタのサマリーコンストラクタ コンストラクタ 説明 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を構築します。
- 
メソッドのサマリー修飾子と型 メソッド 説明 SampleModelcreateCompatibleSampleModel(int w, int h)指定された幅と高さを持つ新しいMultiPixelPackedSampleModelを作成します。DataBuffercreateDataBuffer()このMultiPixelPackedSampleModelに対応するDataBufferを作成します。SampleModelcreateSubsetSampleModel(int[] bands)このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいMultiPixelPackedSampleModelを生成します。intgetBitOffset(int x)走査線のx番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。intgetDataBitOffset()データ・ビット・オフセットをビット数で返します。ObjectgetDataElements(int x, int y, Object obj, DataBuffer data)transferType型のプリミティブ配列内の1つのピクセルのデータを返します。intgetNumDataElements()getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)メソッドおよびsetDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)メソッドを使って1ピクセル転送するのに必要なデータ要素の数を返します。intgetOffset(int x, int y)ピクセル(x, y)のデータ配列要素でのオフセットを返します。int[]getPixel(int x, int y, int[] iArray, DataBuffer data)int配列の先頭要素の、指定された1つのバンドのピクセルを返します。intgetPixelBitStride()ピクセル・ビット・ストライドをビット数で返します。intgetSample(int x, int y, int b, DataBuffer data)(x, y)に位置するピクセルの、指定されたバンド内のサンプルをintとして返します。int[]getSampleSize()すべてのバンドのサンプルあたりのビット数を返します。intgetSampleSize(int band)指定されたバンドのサンプルあたりのビット数を返します。intgetScanlineStride()走査線ストライドを返します。intgetTransferType()getDataElementsメソッドとsetDataElementsメソッドによりピクセルを転送するために使うTransferTypeを返します。voidsetDataElements(int x, int y, Object obj, DataBuffer data)指定されたDataBufferの1つのピクセルのデータを、TransferType型のプリミティブ配列から設定します。voidsetPixel(int x, int y, int[] iArray, DataBuffer data)int配列を入力とし、DataBufferのピクセルを設定します。voidsetSample(int x, int y, int b, int s, DataBuffer data)intを入力とし、DataBufferの(x, y)に位置するピクセルの、指定されたバンドのサンプルを設定します。クラス java.awt.image.SampleModelで宣言されたメソッド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
- 
コンストラクタの詳細- 
MultiPixelPackedSampleModelpublic MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)指定されたデータ型、幅、高さ、および1ピクセルあたりのビット数を持つMultiPixelPackedSampleModelを構築します。- パラメータ:
- dataType- サンプル格納用のデータ形式
- w- 記述されるイメージ・データの領域の幅(ピクセル単位)
- h- 記述されるイメージ・データの領域の高さ(ピクセル単位)
- numberOfBits- ピクセルごとのビット数
- 例外:
- IllegalArgumentException-- dataTypeが- DataBuffer.TYPE_BYTE、- DataBuffer.TYPE_USHORT、または- DataBuffer.TYPE_INTのいずれでもない場合
 
- 
MultiPixelPackedSampleModelpublic MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)指定されたデータ型、幅、高さ、1ピクセルあたりのビット数、走査線ストライド、およびデータ・ビット・オフセットを持つ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のいずれでもない場合
 
 
- 
- 
メソッドの詳細- 
createCompatibleSampleModelpublic SampleModel createCompatibleSampleModel(int w, int h)指定された幅と高さを持つ新しいMultiPixelPackedSampleModelを作成します。 新しいMultiPixelPackedSampleModelのストレージ・データ型と1ピクセルあたりのビット数は、このMultiPixelPackedSampleModelと同じです。- 定義:
- createCompatibleSampleModel、クラス:- SampleModel
- パラメータ:
- w- 指定された幅
- h- 指定された高さ
- 戻り値:
- 指定された幅と高さを持ち、このMultiPixelPackedSampleModelとストレージ・データ型および1ピクセルあたりのビット数が同じSampleModel。
- 例外:
- IllegalArgumentException-- wまたは- hが0以下である場合
 
- 
createDataBufferpublic DataBuffer createDataBuffer()このMultiPixelPackedSampleModelに対応するDataBufferを作成します。DataBufferオブジェクトのデータ型とサイズは、このMultiPixelPackedSampleModelと同じです。DataBufferは1つのバンクを持ちます。- 定義:
- createDataBuffer、クラス:- SampleModel
- 戻り値:
- このMultiPixelPackedSampleModelとデータ型およびサイズが同じDataBuffer。
 
- 
getNumDataElementspublic 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()
 
- 
getSampleSizepublic int[] getSampleSize()すべてのバンドのサンプルあたりのビット数を返します。- 定義:
- getSampleSize、クラス:- SampleModel
- 戻り値:
- サンプルごとのビット数。
 
- 
getSampleSizepublic int getSampleSize(int band)指定されたバンドのサンプルあたりのビット数を返します。- 定義:
- getSampleSize、クラス:- SampleModel
- パラメータ:
- band- 指定されたバンド
- 戻り値:
- 指定されたバンドのサンプルあたりのビット数
 
- 
getOffsetpublic int getOffset(int x, int y)ピクセル(x, y)のデータ配列要素でのオフセットを返します。- パラメータ:
- x- 指定されたピクセルのX座標
- y- 指定されたピクセルのY座標
- 戻り値:
- 指定されたピクセルのオフセット。
 
- 
getBitOffsetpublic int getBitOffset(int x)走査線のx番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。 このオフセットは、すべての走査線で同じです。- パラメータ:
- x- 指定されたピクセル
- 戻り値:
- 指定されたピクセルのビット・オフセット
 
- 
getScanlineStridepublic int getScanlineStride()走査線ストライドを返します。- 戻り値:
- このMultiPixelPackedSampleModelの走査線ストライド。
 
- 
getPixelBitStridepublic int getPixelBitStride()ピクセル・ビット・ストライドをビット数で返します。 この値は、1ピクセルあたりのビット数と同じです。- 戻り値:
- このMultiPixelPackedSampleModelのpixelBitStride。
 
- 
getDataBitOffsetpublic int getDataBitOffset()データ・ビット・オフセットをビット数で返します。- 戻り値:
- このMultiPixelPackedSampleModelのdataBitOffset。
 
- 
getTransferTypepublic int getTransferType()getDataElementsメソッドとsetDataElementsメソッドによりピクセルを転送するために使うTransferTypeを返します。 TransferTypeは、ストレージ・データ型と同じでも、異なっていてもかまいません。 TransferTypeは、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれかになります。- オーバーライド:
- getTransferType、クラス:- SampleModel
- 戻り値:
- transferType
- 関連項目:
- 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
 
- 
createSubsetSampleModelpublic SampleModel createSubsetSampleModel(int[] bands)このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいMultiPixelPackedSampleModelを生成します。MultiPixelPackedSampleModelはバンドを1つしか持たないので、bands引数は長さ1でゼロ番目のバンドを示す必要があります。- 定義:
- createSubsetSampleModel、クラス:- SampleModel
- パラメータ:
- bands- 指定されたバンド
- 戻り値:
- このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいSampleModel。
- 例外:
- RasterFormatException- 要求されたバンド数が1でない場合。
- IllegalArgumentException-- wまたは- hが0以下である場合
 
- 
getSamplepublic int getSample(int x, int y, int b, DataBuffer data)(x, y)に位置するピクセルの、指定されたバンド内のサンプルをintとして返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- 定義:
- getSample、クラス:- SampleModel
- パラメータ:
- x- 指定されたピクセルのX座標
- y- 指定されたピクセルのY座標
- b- 返されるバンド(0と見なされます)
- data- イメージ・データを格納する- DataBuffer
- 戻り値:
- 指定されたピクセルのサンプルが格納されている、指定されたバンド
- 例外:
- ArrayIndexOutOfBoundsException- 指定された座標が範囲外にある場合。
- 関連項目:
- setSample(int, int, int, int, DataBuffer)
 
- 
setSamplepublic 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)
 
- 
getDataElementspublic Object getDataElements(int x, int y, Object obj, DataBuffer data)transferType型のプリミティブ配列内の1つのピクセルのデータを返します。MultiPixelPackedSampleModelの場合、配列は1つの要素を持ち、型は1つのピクセルを格納できるDataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのうちの最小のものになります。 一般に、objはnullで渡されるので、Objectは自動的に作成され、正しい基本データ型になります。次のコードは、 MultiPixelPackedSampleModelmppsm1によってストレージ・レイアウトが記述されている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)
 
- 
getPixelpublic 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)
 
- 
setDataElementspublic void setDataElements(int x, int y, Object obj, DataBuffer data)指定されたDataBufferの1つのピクセルのデータを、TransferType型のプリミティブ配列から設定します。MultiPixelPackedSampleModelの場合は、配列の先頭要素だけが有効なデータを保持し、型は1つのピクセルを保持できるDataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのうちの最小のものになります。次のコードは、 MultiPixelPackedSampleModelmppsm1によってストレージ・レイアウトが記述されている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)
 
- 
setPixelpublic 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)
 
 
-