|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--java.awt.image.SampleModel
|
+--java.awt.image.SinglePixelPackedSampleModel
このクラスは、1 つのピクセルを構成する N 個のサンプルが 1 つのデータ配列要素に格納されるように圧縮されたピクセルデータを表します。データ配列要素の各データは 1 つのピクセルだけのサンプルを保持します。すべてのデータ配列要素は DataBuffer の最初のバンクに置かれます。イメージデータを直接操作できるようにするアクセス用メソッドが提供されています。走査線ストライドは、指定されたサンプルと次の走査線の同じ列の対応するサンプルとの間のデータ配列要素の数です。ビットマスクは、ピクセルのバンドを表すサンプルを抽出するのに必要なマスクです。ビットオフセットは、ピクセルのバンドを表すサンプルのデータ配列要素へのビットでのオフセットです。
次のコードは、DataBuffer data から、ピクセル x,y のバンド b を表すサンプルのビットを抽出する例です。
int sample = data.getElem(y * scanlineStride + x);
sample = (sample & bitMasks[b]) >>> bitOffsets[b];
| クラス java.awt.image.SampleModel から継承したフィールド |
dataType,
height,
numBands,
width |
| コンストラクタの概要 | |
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks)
bitMasks.length のバンドを使って SinglePixelPackedSampleModel を構築します。 |
|
SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks)
bitMasks.length のバンドおよび scanlineStride データ配列要素に等しい走査線ストライドを使って SinglePixelPackedSampleModel を構築します。 |
|
| メソッドの概要 | |
SampleModel |
createCompatibleSampleModel(int w,
int h)
指定された幅と高さを使って新しい SinglePixelPackedSampleModel を作成します。 |
DataBuffer |
createDataBuffer()
この SinglePixelPackedSampleModel に対応する DataBuffer を作成します。 |
SampleModel |
createSubsetSampleModel(int[] bands)
この SinglePixelPackedSampleModel のバンドのサブセットを使って新しい SinglePixelPackedSampleModel を作成します。 |
int[] |
getBitMasks()
すべてのバンドのビットマスクを返します。 |
int[] |
getBitOffsets()
すべてのバンドのピクセルを表すデータ配列要素にビットオフセットを返します。 |
Object |
getDataElements(int x,
int y,
Object obj,
DataBuffer data)
transferType 型のプリミティブ配列内の 1 つのピクセルのデータを返します。 |
int |
getNumDataElements()
getDataElements メソッドおよび setDataElements メソッドを使って 1 ピクセル転送するのに必要なデータ要素の数を返します。 |
int |
getOffset(int x,
int y)
ピクセル (x,y) のオフセット (データ配列要素内) を返します。 |
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 |
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()
この SinglePixelPackedSampleModel の走査線ストライドを返します。 |
void |
setDataElements(int x,
int y,
Object obj,
DataBuffer data)
transferType 型のプリミティブ配列からの、指定した DataBuffer 内の 1 つのピクセルのデータを設定します。 |
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)
int を入力として使用して DataBuffer 内の (x,y) に位置するピクセルの、指定したバンド内のサンプルを設定します。 |
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 |
| コンストラクタの詳細 |
public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int[] bitMasks)
dataType - サンプルの格納のためのデータ型w - 記述されるイメージデータの領域の幅 (ピクセル数)h - 記述されるイメージデータの領域の高さ (ピクセル数)bitMasks - すべてのバンドのビットマスク
public SinglePixelPackedSampleModel(int dataType,
int w,
int h,
int scanlineStride,
int[] bitMasks)
dataType - サンプルの格納のためのデータ型w - 記述されるイメージデータの領域の幅 (ピクセル数)h - 記述されるイメージデータの領域の高さ (ピクセル数)scanlineStride - イメージデータの走査線ストライドbitMasks - すべてのバンドのビットマスク| メソッドの詳細 |
public int getNumDataElements()
public SampleModel createCompatibleSampleModel(int w,
int h)
public DataBuffer createDataBuffer()
public int[] getSampleSize()
public int getSampleSize(int band)
public int getOffset(int x,
int y)
x,y が格納されているデータ要素は、次のように SinglePixelPackedSampleModel sppsm を使って DataBuffer data から取り出すことができます。
data.getElem(sppsm.getOffset(x, y));
public int[] getBitOffsets()
public int[] getBitMasks()
public int getScanlineStride()
public SampleModel createSubsetSampleModel(int[] bands)
public Object getDataElements(int x,
int y,
Object obj,
DataBuffer data)
次のコードは、SinglePixelPackedSampleModel sppsm1 によってストレージレイアウトが記述されている DataBuffer db1 から、SinglePixelPackedSampleModel sppsm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを転送する例です。通常、転送は getPixel/setPixel を使うよりも効率的です。
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null,
db1), db2);
SampleModel のバンド数が同じで、対応するバンドのサンプル当りのビット数が同じで、transferType も同じである場合、2 つの DataBuffer/SampleModel のペアの間での転送のときは getDataElements/setDataElements を使用するのが適切です。
obj が null でない場合は、transferType 型のプリミティブ配列になります。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj が null でなく、ピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされることもあります。
x - ピクセル位置の X 座標y - ピクセル位置の Y 座標obj - null でない場合は、返されたピクセルデータの入るプリミティブ配列data - イメージデータが格納されている DataBuffer
public int[] getPixel(int x,
int y,
int[] iArray,
DataBuffer data)
x - ピクセル位置の X 座標y - ピクセル位置の Y 座標iArray - null でない場合は、この配列内のサンプルを返すdata - イメージデータが格納されている DataBuffer
public int[] getPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
x - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - null でない場合は、この配列内のサンプルを返すdata - イメージデータが格納されている DataBuffer
public int getSample(int x,
int y,
int b,
DataBuffer data)
x - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 返されるバンドdata - イメージデータが格納されている DataBuffer
public int[] getSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
x - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 返されるバンドiArray - null でない場合、この配列内のサンプルを返すdata - イメージデータが格納されている DataBuffer
public void setDataElements(int x,
int y,
Object obj,
DataBuffer data)
次のコードは、SinglePixelPackedSampleModel sppsm1 によってストレージレイアウトが記述されている DataBuffer db1 から、SinglePixelPackedSampleModel sppsm2 によってストレージレイアウトが記述されている DataBuffer db2 へ、1 ピクセルのデータを転送する例です。通常、転送は getPixel と setPixel を使うよりも効率的です。
SinglePixelPackedSampleModel sppsm1, sppsm2;
DataBufferInt db1, db2;
sppsm2.setDataElements(x, y, sppsm1.getDataElements(x, y, null,
db1), db2);
SampleModel のバンド数が同じで、対応するバンドのサンプル当りのビット数が同じで、transferType が同じである場合、2 つの DataBuffer/SampleModel のペアの間での転送するときは、getDataElements/setDataElements を使用するのが適切です。
obj は transferType 型のプリミティブ配列でなければなりません。そうでない場合は、ClassCastException がスローされます。座標が境界内にない場合、または obj がピクセルデータを格納するために十分なサイズでない場合は、ArrayIndexOutOfBoundsException がスローされることがあります。
x - ピクセル位置の X 座標y - ピクセル位置の Y 座標obj - ピクセルデータが格納されているプリミティブ配列data - イメージデータが格納されている DataBuffer
public void setPixel(int x,
int y,
int[] iArray,
DataBuffer data)
x - ピクセル位置の X 座標y - ピクセル位置の Y 座標iArray - int 配列の入力サンプルdata - イメージデータが格納されている DataBuffer
public void setPixels(int x,
int y,
int w,
int h,
int[] iArray,
DataBuffer data)
x - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さiArray - int 配列の入力サンプルdata - イメージデータが格納されている DataBuffer
public void setSample(int x,
int y,
int b,
int s,
DataBuffer data)
x - ピクセル位置の X 座標y - ピクセル位置の Y 座標b - 設定されるバンドs - int での入力サンプルdata - イメージデータが格納されている DataBuffer
public void setSamples(int x,
int y,
int w,
int h,
int b,
int[] iArray,
DataBuffer data)
x - 左上のピクセル位置の X 座標y - 左上のピクセル位置の Y 座標w - ピクセル矩形の幅h - ピクセル矩形の高さb - 設定されるバンドiArray - int 配列の入力サンプルdata - イメージデータが格納されている DataBuffer
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||