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
-
コンストラクタの詳細
-
MultiPixelPackedSampleModel
public 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のいずれでもない場合
-
MultiPixelPackedSampleModel
public 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のいずれでもない場合
-
-
メソッドの詳細
-
createCompatibleSampleModel
public SampleModel createCompatibleSampleModel(int w, int h)指定された幅と高さを持つ新しいMultiPixelPackedSampleModelを作成します。 新しいMultiPixelPackedSampleModelのストレージ・データ型と1ピクセルあたりのビット数は、このMultiPixelPackedSampleModelと同じです。- 定義:
createCompatibleSampleModel、クラス:SampleModel- パラメータ:
w- 指定された幅h- 指定された高さ- 戻り値:
- 指定された幅と高さを持ち、この
MultiPixelPackedSampleModelとストレージ・データ型および1ピクセルあたりのビット数が同じSampleModel。 - 例外:
IllegalArgumentException-wまたはhが0以下である場合
-
createDataBuffer
public DataBuffer createDataBuffer()このMultiPixelPackedSampleModelに対応するDataBufferを作成します。DataBufferオブジェクトのデータ型とサイズは、このMultiPixelPackedSampleModelと同じです。DataBufferは1つのバンクを持ちます。- 定義:
createDataBuffer、クラス:SampleModel- 戻り値:
- この
MultiPixelPackedSampleModelとデータ型およびサイズが同じDataBuffer。
-
getNumDataElements
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()
-
getSampleSize
public int[] getSampleSize()すべてのバンドのサンプルあたりのビット数を返します。- 定義:
getSampleSize、クラス:SampleModel- 戻り値:
- サンプルごとのビット数。
-
getSampleSize
public int getSampleSize(int band)指定されたバンドのサンプルあたりのビット数を返します。- 定義:
getSampleSize、クラス:SampleModel- パラメータ:
band- 指定されたバンド- 戻り値:
- 指定されたバンドのサンプルあたりのビット数
-
getOffset
public int getOffset(int x, int y)ピクセル(x, y)のデータ配列要素でのオフセットを返します。- パラメータ:
x- 指定されたピクセルのX座標y- 指定されたピクセルのY座標- 戻り値:
- 指定されたピクセルのオフセット。
-
getBitOffset
public int getBitOffset(int x)走査線のx番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。 このオフセットは、すべての走査線で同じです。- パラメータ:
x- 指定されたピクセル- 戻り値:
- 指定されたピクセルのビット・オフセット
-
getScanlineStride
public int getScanlineStride()走査線ストライドを返します。- 戻り値:
- この
MultiPixelPackedSampleModelの走査線ストライド。
-
getPixelBitStride
public int getPixelBitStride()ピクセル・ビット・ストライドをビット数で返します。 この値は、1ピクセルあたりのビット数と同じです。- 戻り値:
- この
MultiPixelPackedSampleModelのpixelBitStride。
-
getDataBitOffset
public int getDataBitOffset()データ・ビット・オフセットをビット数で返します。- 戻り値:
- この
MultiPixelPackedSampleModelのdataBitOffset。
-
getTransferType
public 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
-
createSubsetSampleModel
public SampleModel createSubsetSampleModel(int[] bands)このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいMultiPixelPackedSampleModelを生成します。MultiPixelPackedSampleModelはバンドを1つしか持たないので、bands引数は長さ1でゼロ番目のバンドを示す必要があります。- 定義:
createSubsetSampleModel、クラス:SampleModel- パラメータ:
bands- 指定されたバンド- 戻り値:
- この
MultiPixelPackedSampleModelのバンドのサブセットを持つ新しいSampleModel。 - 例外:
RasterFormatException- 要求されたバンド数が1でない場合。IllegalArgumentException-wまたはhが0以下である場合
-
getSample
public 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)
-
setSample
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)
-
getDataElements
public 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)
-
getPixel
public int[] getPixel(int x, int y, int[] iArray, DataBuffer data)int配列の先頭要素の、指定された1つのバンドのピクセルを返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。- オーバーライド:
getPixel、クラス:SampleModel- パラメータ:
x- 指定されたピクセルのX座標y- 指定されたピクセルのY座標iArray返されるピクセルが格納される配列、またはnulldata- イメージ・データの格納先のDataBuffer- 戻り値:
- 指定されたピクセルが格納されている配列
- 例外:
ArrayIndexOutOfBoundsException- 座標が範囲外にある場合- 関連項目:
setPixel(int, int, int[], DataBuffer)
-
setDataElements
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のうちの最小のものになります。次のコードは、
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)
-
setPixel
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)
-