クラスMultiPixelPackedSampleModel
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);
-
フィールドのサマリー
クラスjava.awt.image.SampleModelで宣言されたフィールド
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を構築します。 -
メソッドのサマリー
修飾子と型メソッド説明createCompatibleSampleModel(int w, int h) 指定された幅と高さを持つ新しいMultiPixelPackedSampleModelを作成します。このMultiPixelPackedSampleModelに対応するDataBufferを作成します。createSubsetSampleModel(int[] bands) このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいMultiPixelPackedSampleModelを生成します。intgetBitOffset(int x) 走査線のx番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。intデータ・ビット・オフセットをビット数で返します。getDataElements(int x, int y, Object obj, DataBuffer data) transferType型のプリミティブ配列内の1つのピクセルのデータを返します。intgetDataElements(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つのバンドのピクセルを返します。intピクセル・ビット・ストライドをビット数で返します。intgetSample(int x, int y, int b, DataBuffer data) (x, y)に位置するピクセルの、指定されたバンド内のサンプルをintとして返します。int[]すべてのバンドのサンプルあたりのビット数を返します。intgetSampleSize(int band) 指定されたバンドのサンプルあたりのビット数を返します。int走査線ストライドを返します。intgetDataElementsメソッドと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- 戻り値:
- データ要素数。
- 関連項目:
-
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
- 関連項目:
-
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
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- 座標が範囲外にある場合。- 関連項目:
-
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からDataBuffer db2への1ピクセルのデータの転送を示しています。その格納レイアウトはMultiPixelPackedSampleModel mppsm2で記述されています。 この転送方法は、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ではないかピクセル・データを保持するのに十分な大きさではない場合- 関連項目:
-
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- 座標が範囲外にある場合- 関連項目:
-
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からDataBuffer db2への1ピクセルのデータの転送を示しています。その格納レイアウトはMultiPixelPackedSampleModel mppsm2で記述されています。 この転送方法は、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- 関連項目:
-
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- 関連項目:
-