JavaTM 2 Platform
Std. Ed. v1.3

java.awt.image
クラス MultiPixelPackedSampleModel

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 の先頭から最初のピクセルまでのビット単位のオフセットであり、ピクセルビットストライドの倍数です。

次のコードは、DataBufferdata からピクセル 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
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType,
                                   int w,
                                   int h,
                                   int numberOfBits)
指定されたデータ型、幅、高さ、および 1 ピクセル当たりのビット数を持つ MultiPixelPackedSampleModel を構築します。
パラメータ:
dataType - サンプルの格納のためのデータ形式
w - 記述されているイメージデータ領域の幅 (ピクセル数)
h - 記述されているイメージデータの領域の高さ (ピクセル数)
numberOfBits - ピクセルごとのビット数
例外:
IllegalArgumentException - dataType が、DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.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_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT のどれでもない場合
メソッドの詳細

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅と高さを持つ新しい MultiPixelPackedSampleModel を構築します。新しい MultiPixelPackedSampleModel のストレージデータ型と 1 ピクセル当たりのビット数は、この MultiPixelPackedSampleModel と同じです。
オーバーライド:
クラス SampleModel 内の createCompatibleSampleModel
パラメータ:
w - 指定された幅
h - 指定された高さ
戻り値:
指定された幅と高さを持ち、この MultiPixelPackedSampleModel とストレージデータ型および 1 ピクセル当たりのビット数が同じ SampleModel
例外:
IllegalArgumentException - w または h が 0 以下の場合

createDataBuffer

public DataBuffer createDataBuffer()
この MultiPixelPackedSampleModel に対応する DataBuffer を構築します。DataBuffer オブジェクトのデータ型とサイズは、この MultiPixelPackedSampleModel と同じです。DataBuffer は 1 つのバンクを持ちます。
オーバーライド:
クラス SampleModel 内の createDataBuffer
戻り値:
この 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 です。
オーバーライド:
クラス SampleModel 内の getNumDataElements
戻り値:
データ要素数

getSampleSize

public int[] getSampleSize()
すべてのバンドのサンプル当りのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize
戻り値:
サンプルごとのビット数

getSampleSize

public int getSampleSize(int band)
指定されたバンドのサンプル当りのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize
パラメータ:
band - 指定されたバンド
戻り値:
指定されたバンドのサンプル当たりのビット数

getOffset

public int getOffset(int x,
                     int y)
ピクセル (x, y) のデータ配列要素でのオフセットを返します。
パラメータ:
x, y - 指定されたピクセル
戻り値:
指定されたピクセルのオフセット

getBitOffset

public int getBitOffset(int x)
走査線の x 番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。このオフセットは、すべての走査線で同じです。
パラメータ:
x - 指定されたピクセル
戻り値:
指定されたピクセルのビットオフセット

getScanlineStride

public int getScanlineStride()
走査線ストライドを返します。
戻り値:
この MultiPixelPackedSampleModel の走査線ストライド

getPixelBitStride

public int getPixelBitStride()
ピクセルビットストライドをビット数で返します。この値は、1 ピクセル当たりのビット数と同じです。
戻り値:
この MultiPixelPackedSampleModelpixelBitStride

getDataBitOffset

public int getDataBitOffset()
データビットオフセットをビット数で返します。
戻り値:
この MultiPixelPackedSampleModeldataBitOffset

getTransferType

public int getTransferType()
getDataElements メソッドと setDataElements メソッドによりピクセルを転送するために使う transferType を返します。transferType は、ストレージデータ型と同じでも、異なっていてもかまいません。transferType は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、DataBuffer.TYPE_INT のどれかになります。
オーバーライド:
クラス SampleModel 内の getTransferType
戻り値:
transferType

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この MultiPixelPackedSampleModel のバンドのサブセットを持つ新しい MultiPixelPackedSampleModel を作成します。MultiPixelPackedSampleModel はバンドを 1 つしか持たないので、bands 引数は長さ 1 でゼロ番目のバンドを示さなければなりません。
オーバーライド:
クラス SampleModel 内の createSubsetSampleModel
パラメータ:
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 がスローされます。
オーバーライド:
クラス SampleModel 内の getSample
パラメータ:
x, y - 指定されたピクセルの座標
b - 返されるバンド (0 と見なされる)
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルのサンプルが格納されている、指定されたバンド
例外:
ArrayIndexOutOfBoundException - 指定された座標が境界内にない場合

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
int を入力として使って、DataBuffer の (x, y) に位置するピクセルの、指定されたバンドのサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス SampleModel 内の setSample
パラメータ:
x, 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 のうちの最小のものになります。一般に、objnull で渡されるので、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);
 
2 つの SampleModel のバンド数が同じで、対応するバンドの 1 サンプル当たりのビット数が同じで、transferType も同じ場合は、2 組の DataBufferSampleModel のペアの間で転送を行うには、getDataElements または setDataElements を使うのが適切です。

objnull でない場合は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、objnull でなく、ピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス SampleModel 内の getDataElements
パラメータ:
x, y - ピクセル位置の座標
obj - ピクセルデータを返すプリミティブ配列、または null
data - イメージデータを格納する DataBuffer
戻り値:
指定されたピクセルのデータが格納されている Object
例外:
ClassCastException - obj が transferType 型のプリミティブ配列でなく、null でもない場合
ArrayIndexOutOfBoundsException - 座標が境界内にない場合、あるいは objnull でない場合に、ピクセルデータを保持するに十分な大きさでないとき

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
int 配列の先頭要素の、指定された 1 つのバンドのピクセルを返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス SampleModel 内の getPixel
パラメータ:
x, y - ピクセル位置の座標
iArray - 返されるピクセルが格納される配列、または null
data - イメージデータが格納されている 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 のうちの最小のものになります。

次のコードは、ストレージレイアウトが 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);
 
2 つの SampleModel オブジェクトのバンド数が同じで、対応するバンドの 1 サンプル当たりのビット数が同じで、transferType も同じ場合は、2 組の DataBufferSampleModel のペアの間で転送を行うには、getDataElements または setDataElements を使うのが適切です。

obj は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合や、obj がピクセルデータを格納するために十分な大きさでない場合は、ArrayIndexOutOfBoundsException がスローされます。

オーバーライド:
クラス SampleModel 内の setDataElements
パラメータ:
x, y - ピクセル位置の座標
obj - ピクセルデータを格納するプリミティブ配列
data - イメージデータを格納する DataBuffer

setPixel

public void setPixel(int x,
                     int y,
                     int[] iArray,
                     DataBuffer data)
int 配列を入力として使って、DataBuffer のピクセルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
オーバーライド:
クラス SampleModel 内の setPixel
パラメータ:
x, y - ピクセル位置の座標
iArray - int 配列の入力ピクセル
data - イメージデータを格納する DataBuffer

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.