- java.lang.Object
-
- java.awt.image.SampleModel
-
- java.awt.image.MultiPixelPackedSampleModel
-
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);
-
-
フィールドのサマリー
-
クラス 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
を構築します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 SampleModel
createCompatibleSampleModel(int w, int h)
指定された幅と高さを持つ新しいMultiPixelPackedSampleModel
を作成します。DataBuffer
createDataBuffer()
このMultiPixelPackedSampleModel
に対応するDataBuffer
を作成します。SampleModel
createSubsetSampleModel(int[] bands)
このMultiPixelPackedSampleModel
のバンドのサブセットを持つ新しいMultiPixelPackedSampleModel
を生成します。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を返します。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)に位置するピクセルの、指定されたバンドのサンプルを設定します。-
クラス 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
は自動的に作成され、正しい基本データ型になります。次のコードは、
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
、クラス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
返されるピクセルが格納される配列、またはnull
data
- イメージ・データの格納先の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のうちの最小のものになります。次のコードは、
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
、クラス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)
-
-