Java プラットフォーム 1.2

java.awt.image
クラス ComponentSampleModel

java.lang.Object
  |
  +--java.awt.image.SampleModel
        |
        +--java.awt.image.ComponentSampleModel
直接の既知のサブクラス:
BandedSampleModel, PixelInterleavedSampleModel

public class ComponentSampleModel
extends SampleModel

このクラスは、DataBuffer のデータ要素 1 つに 1 つずつピクセルを形成する各サンプルが格納されているイメージデータを表します。DataBuffer は、1 ピクセルを形成する N 個のサンプルを、N 個の別個のデータ配列要素に格納します。異なるバンドはそれぞれ、DataBuffer の別のバンクに格納されている場合があります。イメージデータを直接操作できるように、アクセス用の各メソッドが提供されています。このクラスは、各種のインタリーブをサポートできます。たとえば、バンドインタリーブ、走査線インタリーブ、およびピクセルインタリーブです。ピクセルストライドは、同じ走査線の同じバンドに対する 2 つのサンプル間の、データ配列要素数です。走査線ストライドは、任意のサンプルと、それと対応する、次の走査線の同じ列にあるサンプル間のデータ配列要素数です。バンドのオフセットは、各バンドを格納している DataBuffer のバンクにある最初のデータ配列要素から、バンドの最初のサンプルまでにある、データ配列要素数を表します。バンド数は、0 から N-1 までです。このクラスは、8 ビット、16 ビット、または 32 ビットで格納できる積分値を各サンプルに持つイメージデータを表すことができます。このとき、指定された ComponentSampleModel のすべてのサンプルも、同じ精度で格納されます。すべてのストライド、およびオフセットは、負でない数値でなければなりません。

関連項目:
PixelInterleavedSampleModel, BandedSampleModel

フィールドの概要
protected  int[] bandOffsets
          データ配列要素にあるすべてのバンドのオフセットです。
protected  int[] bankIndices
          イメージデータのバンドを格納する各バンクのインデックスです。
protected  int numBands
           
protected  int numBanks
           
protected  int pixelStride
          この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) のピクセルストライドです。
protected  int scanlineStride
          この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) の走査線ストライドです。
 
クラス java.awt.image.SampleModel から継承したフィールド
dataType, height, numBands, width
 
コンストラクタの概要
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)
          指定されたパラメータで、ComponentSampleModel を構築します。
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)
          指定されたパラメータで、ComponentSampleModel を構築します。
 
メソッドの概要
 SampleModel createCompatibleSampleModel(int w, int h)
          指定された幅および高さで、新しい ComponentSampleModel を構築します。
 DataBuffer createDataBuffer()
          この ComponentSampleModel と対応する DataBuffer を作成します。
 SampleModel createSubsetSampleModel(int[] bands)
          この ComponentSampleModel のサブセットを持つ、新しい ComponentSampleModel を構築します。
 int[] getBandOffsets()
          すべてのバンドについて、バンクのオフセットを返します。
 int[] getBankIndices()
          すべてのバンドについて、バンクのインデックスを返します。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          1 ピクセルのデータを transferType 型のプリミティブ配列として返します。
 int getNumDataElements()
          getDataElements メソッドおよび setDataElements メソッドでピクセルを転送するのに必要なデータ要素数を返します。
 int getOffset(int x, int y)
          ピクセル (x,y) の最初のバンドのオフセットを取得します。
 int getOffset(int x, int y, int b)
          ピクセル (x,y) のバンド b のオフセットを取得します。
 int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
          指定されたピクセルのすべてのサンプルを int 配列として返します。
 int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          指定されたピクセル矩形に使うサンプルを int 配列としてすべて返します。
 int getPixelStride()
          この ComponentSampleModel のピクセルストライドを返します。
 int getSample(int x, int y, int b, DataBuffer data)
          座標 (x,y) にあるピクセルの指定されたバンドにあるサンプルを int として返します。
 int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          指定されたピクセル矩形に使うサンプルを int 配列として返します。
 int[] getSampleSize()
          すべてのバンドについて、サンプル当たりのビット数を返します。
 int getSampleSize(int band)
          指定されたバンドについて、サンプル当たりのビット数を返します。
 int getScanlineStride()
          この ComponentSampleModel の走査線ストライドを返します。
 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 setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          配列要素ごとに 1 個のサンプルを格納している int 配列から、複数のピクセルからなる矩形に使うサンプルをすべて設定します。
 void setSample(int x, int y, int b, int s, DataBuffer data)
          (x,y) にあるピクセルのために指定されたバンドにあるサンプルを、int を入力に使って DataBuffer に設定します。
 void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          データ配列要素当たり 1 個のサンプルを格納している int 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。
 
クラス java.awt.image.SampleModel から継承したメソッド
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

bandOffsets

protected int[] bandOffsets
データ配列要素にあるすべてのバンドのオフセットです。

bankIndices

protected int[] bankIndices
イメージデータのバンドを格納する各バンクのインデックスです。

numBands

protected int numBands

numBanks

protected int numBanks

scanlineStride

protected int scanlineStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) の走査線ストライドです。

pixelStride

protected int pixelStride
この ComponentSampleModel で記述されるイメージデータ領域 (データ配列要素) のピクセルストライドです。
コンストラクタの詳細

ComponentSampleModel

public ComponentSampleModel(int dataType,
                            int w,
                            int h,
                            int pixelStride,
                            int scanlineStride,
                            int[] bandOffsets)
指定されたパラメータで、ComponentSampleModel を構築します。バンド数は、bandOffsets 配列の長さによって決まります。すべてのバンドは、DataBuffer の最初のバンクに格納されます。
パラメータ:
dataType - サンプルを格納するためのデータ型
w - 記述されたイメージデータの領域の幅 (ピクセル単位)
h - 記述されたイメージデータの領域の高さ (ピクセル単位)
pixelStride - 記述されたイメージデータの領域のピクセルストライド
scanlineStride - 記述されたイメージデータの領域の走査線ストライド
bandOffsets - すべてのバンドのオフセット

ComponentSampleModel

public ComponentSampleModel(int dataType,
                            int w,
                            int h,
                            int pixelStride,
                            int scanlineStride,
                            int[] bankIndices,
                            int[] bandOffsets)
指定されたパラメータで、ComponentSampleModel を構築します。バンド数は、bandOffsets 配列の長さによって決まります。異なるバンドは、DataBuffer の別々のバンクに格納されます。
パラメータ:
dataType - 格納するサンプルのデータ型
w - 記述されたイメージデータの領域の幅 (ピクセル単位)
h - 記述されたイメージデータの領域の高さ (ピクセル単位)
pixelStride - 記述されたイメージデータの領域のピクセルストライド
scanlineStride - 記述されたイメージデータの領域の走査線ストライド
bandIndices - すべてのバンドのバンクインデックス
bandOffsets - すべてのバンドのオフセット
メソッドの詳細

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
指定された幅および高さで、新しい ComponentSampleModel を構築します。新しい SampleModel は、この SampleModel と同じ数のバンド、ストレージデータ型、インタリーブ化方式、およびピクセルストライドを持ちます。
オーバーライド:
クラス SampleModel 内の createCompatibleSampleModel

createSubsetSampleModel

public SampleModel createSubsetSampleModel(int[] bands)
この ComponentSampleModel のサブセットを持つ、新しい ComponentSampleModel を構築します。新しい ComponentSampleModel は、既存の ComponentSampleModel を使用できる任意の DataBuffer と組み合わせて使用できます。新しい ComponentSampleModel と DataBuffer の組み合わせは、元の ComponentSampleModel と DataBuffer の組み合わせにあるバンドのサブセットを持つイメージを表します。
オーバーライド:
クラス SampleModel 内の createSubsetSampleModel

createDataBuffer

public DataBuffer createDataBuffer()
この ComponentSampleModel と対応する DataBuffer を作成します。DataBuffer のデータ型、バンク数、およびサイズは、この ComponentSampleModel と矛盾しません。
オーバーライド:
クラス SampleModel 内の createDataBuffer

getOffset

public int getOffset(int x,
                     int y)
ピクセル (x,y) の最初のバンドのオフセットを取得します。最初のバンドのサンプルは、DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
        data.getElem(csm.getOffset(x, y));
 

getOffset

public int getOffset(int x,
                     int y,
                     int b)
ピクセル (x,y) のバンド b のオフセットを取得します。バンドのサンプルは、DataBuffer data から、ComponentSampleModel csm を使って次のようにして取得できます。
       data.getElem(csm.getOffset(x, y, b));
 

getSampleSize

public final int[] getSampleSize()
すべてのバンドについて、サンプル当たりのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize

getSampleSize

public final int getSampleSize(int band)
指定されたバンドについて、サンプル当たりのビット数を返します。
オーバーライド:
クラス SampleModel 内の getSampleSize

getBankIndices

public final int[] getBankIndices()
すべてのバンドについて、バンクのインデックスを返します。

getBandOffsets

public final int[] getBandOffsets()
すべてのバンドについて、バンクのオフセットを返します。

getScanlineStride

public final int getScanlineStride()
この ComponentSampleModel の走査線ストライドを返します。

getPixelStride

public final int getPixelStride()
この ComponentSampleModel のピクセルストライドを返します。

getNumDataElements

public final int getNumDataElements()
getDataElements メソッドおよび setDataElements メソッドでピクセルを転送するのに必要なデータ要素数を返します。ComponentSampleModel では、これはバンド数と等しくなります。
オーバーライド:
クラス SampleModel 内の getNumDataElements
関連項目:
SampleModel.getNumDataElements()

getDataElements

public Object getDataElements(int x,
                              int y,
                              Object obj,
                              DataBuffer data)
1 ピクセルのデータを transferType 型のプリミティブ配列として返します。ComponentSampleModel では、これはデータ型と等しくなり、サンプルが配列要素ごとに 1 個ずつ返されます。通常は、Object が自動的に作成され、正しい基本データ型になるように、obj には null が渡されます。

次のコードは、ComponentSampleModel csm1 によってストレージレイアウトが記述されている DataBuffer db1 から、ComponentSampleModel csm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを、転送する例です。この転送方法は、getPixel と setPixel を使う方法よりも効率的です。

 	     ComponentSampleModel csm1, csm2;
	     DataBufferInt db1, db2;
 	     csm2.setDataElements(x, y,
                            csm1.getDataElements(x, y, null, db1), db2);
 
SampleModel のバンド数が同じで、対応するバンドの 1 サンプル当たりのビット数が同じで、transferType も同じである場合、2 組の DataBuffer および SampleModel のペア間で転送を行うには、getDataElements および setDataElements を使うのが適切です。

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

パラメータ:
x - ピクセルの位置の X 座標
y - ピクセルの位置の Y 座標
obj - null でない場合は、プリミティブ配列にピクセルデータを返す
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の getDataElements

getPixel

public int[] getPixel(int x,
                      int y,
                      int[] iArray,
                      DataBuffer data)
指定されたピクセルのすべてのサンプルを int 配列として返します。配列要素にサンプル 1 個が対応します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
パラメータ:
x - ピクセルの位置の X 座標
y - ピクセルの位置の Y 座標
iArray - null でない場合は、この配列にサンプルを返す
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の getPixel

getPixels

public int[] getPixels(int x,
                       int y,
                       int w,
                       int h,
                       int[] iArray,
                       DataBuffer data)
指定されたピクセル矩形に使うサンプルを int 配列としてすべて返します。配列要素にサンプル 1 個が対応します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
パラメータ:
x - 左上隅にあるピクセルの位置の X 座標
y - 左上隅にあるピクセルの位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - null でない場合は、この配列にサンプルを返す
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の getPixels

getSample

public int getSample(int x,
                     int y,
                     int b,
                     DataBuffer data)
座標 (x,y) にあるピクセルの指定されたバンドにあるサンプルを int として返します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
パラメータ:
x - ピクセルの位置の X 座標
y - ピクセルの位置の Y 座標
b - 返されるバンド
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の getSample

getSamples

public int[] getSamples(int x,
                        int y,
                        int w,
                        int h,
                        int b,
                        int[] iArray,
                        DataBuffer data)
指定されたピクセル矩形に使うサンプルを int 配列として返します。配列要素にサンプル 1 個が対応します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
パラメータ:
x - 左上隅にあるピクセルの位置の X 座標
y - 左上隅にあるピクセルの位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 返されるバンド
iArray - null でない場合は、この配列にサンプルを返す
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の getSamples

setDataElements

public void setDataElements(int x,
                            int y,
                            Object obj,
                            DataBuffer data)
指定された DataBuffer にある 1 ピクセルのデータを、transferType 型のプリミティブ配列から設定します。ComponentSampleModel では、これはデータ型と同じになり、サンプルは各配列要素に 1 個ずつ転送されます。

次のコードは、ComponentSampleModel csm1 によってストレージレイアウトが記述されている DataBuffer db1 から、ComponentSampleModel csm2 によって、ストレージレイアウトが記述されている DataBuffer db2 へ 、1 ピクセルのデータを転送する例です。この転送方法は、getPixel と setPixel を使う方法よりも効率的です。

 	     ComponentSampleModel csm1, csm2;
	     DataBufferInt db1, db2;
 	     csm2.setDataElements(x, y, csm1.getDataElements(x, y, null, db1),
                            db2);
 
SampleModel のバンド数が同じで、対応するバンドの 1 サンプル当たりのビット数が同じで、transferType も同じである場合、2 組の DataBuffer および SampleModel のペア間で転送を行うには、getDataElements および setDataElements を使うのが適切です。

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

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

setPixel

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

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      int[] iArray,
                      DataBuffer data)
配列要素ごとに 1 個のサンプルを格納している int 配列から、複数のピクセルからなる矩形に使うサンプルをすべて設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされます。
パラメータ:
x - 左上隅にあるピクセルの位置の X 座標
y - 左上隅にあるピクセルの位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
iArray - int 配列内の入力サンプル
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の setPixels

setSample

public void setSample(int x,
                      int y,
                      int b,
                      int s,
                      DataBuffer data)
(x,y) にあるピクセルのために指定されたバンドにあるサンプルを、int を入力に使って DataBuffer に設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
パラメータ:
x - ピクセルの位置の X 座標
y - ピクセルの位置の Y 座標
b - 設定対象のバンド
s - 入力サンプル (int)
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の setSample

setSamples

public void setSamples(int x,
                       int y,
                       int w,
                       int h,
                       int b,
                       int[] iArray,
                       DataBuffer data)
データ配列要素当たり 1 個のサンプルを格納している int 配列から、指定されたピクセル矩形の、指定されたバンドにサンプルを設定します。座標が境界内にない場合は、ArrayIndexOutOfBoundsException がスローされる場合があります。
パラメータ:
x - 左上隅にあるピクセルの位置の X 座標
y - 左上隅にあるピクセルの位置の Y 座標
w - ピクセル矩形の幅
h - ピクセル矩形の高さ
b - 設定対象のバンド
iArray - int 配列内の入力サンプル
data - イメージデータが格納されている DataBuffer
オーバーライド:
クラス SampleModel 内の setSamples

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.