モジュール java.desktop
パッケージ java.awt.image

クラスSinglePixelPackedSampleModel

java.lang.Object
java.awt.image.SampleModel
java.awt.image.SinglePixelPackedSampleModel

public class SinglePixelPackedSampleModel extends SampleModel
このクラスは、1つのピクセルを構成するN個のサンプルが1つのデータ配列要素に格納されるようにパックされたピクセル・データを表します。データ配列要素の各データは1つのピクセルだけのサンプルを保持します。 このクラスは、TYPE_BYTETYPE_USHORTTYPE_INTの各データ型をサポートします。 すべてのデータ配列要素は、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を構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    指定された幅と高さを使って新しいSinglePixelPackedSampleModelを作成します。
    このSinglePixelPackedSampleModelに対応するDataBufferを生成します。
    このSinglePixelPackedSampleModelのバンドのサブセットを使って新しいSinglePixelPackedSampleModelを作成します。
    int[]
    すべてのバンドのビット・マスクを返します。
    int[]
    すべてのバンドのピクセルを表すデータ配列要素にビット・オフセットを返します。
    getDataElements(int x, int y, Object obj, DataBuffer data)
    transferType型のプリミティブ配列内の1つのピクセルのデータを返します。
    int
    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配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに1つのサンプルが返されます。
    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配列の指定されたピクセルの矩形の、指定されたバンドのサンプルを返します。配列要素ごとに1つのサンプルが返されます。
    int[]
    すべてのバンドのサンプルあたりのビット数を返します。
    int
    getSampleSize(int band)
    指定されたバンドのサンプルあたりのビット数を返します。
    int
    このSinglePixelPackedSampleModelの走査線ストライドを返します。
    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)
    intを入力とし、DataBufferの(x,y)に位置するピクセルの、指定されたバンドのサンプルを設定します。
    void
    setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
    指定された矩形ピクセルの指定されたバンドのサンプルを、配列要素ごとに1つのサンプルが格納されているint配列から設定します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • SinglePixelPackedSampleModel

      public SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
      bitMasks.lengthのバンドを使ってSinglePixelPackedSampleModelを構築します。 各サンプルは、データ配列要素の対応するビット・マスクの位置に格納されます。 各ビット・マスクは連続している必要があり、複数のマスクをオーバーラップさせることはできません。 データ型の容量を超えるビット・マスクは切り捨てられます。
      パラメータ:
      dataType - サンプルの格納のためのデータ型。
      w - 記述されたイメージ・データの領域の幅(単位はピクセル)。
      h - 記述されたイメージ・データの領域の高さ(単位はピクセル)。
      bitMasks - すべてのバンドのビット・マスク。
      例外:
      IllegalArgumentException - dataTypeDataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれでもない場合
    • SinglePixelPackedSampleModel

      public SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
      bitMasks.lengthのバンド、そしてscanlineStrideデータ配列要素と一致する走査線ストライドを使ってSinglePixelPackedSampleModelを構築します。 各サンプルは、データ配列要素の対応するビット・マスクの位置に格納されます。 各ビット・マスクは連続している必要があり、複数のマスクをオーバーラップさせることはできません。 データ型の容量を超えるビット・マスクは切り捨てられます。
      パラメータ:
      dataType - サンプルの格納のためのデータ型。
      w - 記述されたイメージ・データの領域の幅(単位はピクセル)。
      h - 記述されたイメージ・データの領域の高さ(単位はピクセル)。
      scanlineStride - イメージ・データの走査線ストライド。
      bitMasks - すべてのバンドのビット・マスク。
      例外:
      IllegalArgumentException - wまたはhが0以下である場合
      IllegalArgumentException - bitMaskのマスクが連続していない場合
      IllegalArgumentException - dataTypeDataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれでもない場合
  • メソッドの詳細

    • getNumDataElements

      public int getNumDataElements()
      getDataElementsメソッドおよびsetDataElementsメソッドを使って1ピクセル転送するのに必要なデータ要素の数を返します。 SinglePixelPackedSampleModelの場合は1になります。
      定義:
      getNumDataElements、クラスSampleModel
      戻り値:
      データ要素数。
      関連項目:
    • createCompatibleSampleModel

      public SampleModel createCompatibleSampleModel(int w, int h)
      指定された幅と高さを使って新しいSinglePixelPackedSampleModelを作成します。 新しいSinglePixelPackedSampleModelのストレージ・データ型とビット・マスクは、このSinglePixelPackedSampleModelと同じになります。
      定義:
      createCompatibleSampleModel、クラスSampleModel
      パラメータ:
      w - 結果として得られるSampleModelの幅
      h - 結果として得られるSampleModelの高さ
      戻り値:
      指定された幅と高さを持つSinglePixelPackedSampleModel
      例外:
      IllegalArgumentException - wまたはhが0以下である場合
    • createDataBuffer

      public DataBuffer createDataBuffer()
      このSinglePixelPackedSampleModelに対応するDataBufferを生成します。 DataBufferのデータ型とサイズはこのSinglePixelPackedSampleModelと一致します。 DataBufferは1つのバンクを持ちます。
      定義:
      createDataBuffer、クラスSampleModel
      戻り値:
      このSampleModelに対するDataBuffer
    • 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,yが格納されているデータ要素は、次のようにSinglePixelPackedSampleModel sppsmを使ってDataBuffer dataから取り出すことができます。
              data.getElem(sppsm.getOffset(x, y));
       
      パラメータ:
      x - 指定されたピクセルのX座標
      y - 指定されたピクセルのY座標
      戻り値:
      指定されたピクセルのオフセット。
    • getBitOffsets

      public int[] getBitOffsets()
      すべてのバンドのピクセルを表すデータ配列要素にビット・オフセットを返します。
      戻り値:
      すべてのバンドのピクセルを表すビット・オフセット
    • getBitMasks

      public int[] getBitMasks()
      すべてのバンドのビット・マスクを返します。
      戻り値:
      すべてのバンドのビット・マスク。
    • getScanlineStride

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

      public SampleModel createSubsetSampleModel(int[] bands)
      このSinglePixelPackedSampleModelのバンドのサブセットを使って新しいSinglePixelPackedSampleModelを作成します。 新しいSinglePixelPackedSampleModelは、既存のSinglePixelPackedSampleModelで使用可能な任意のDataBufferとともに使用できます。 SinglePixelPackedSampleModelとDataBufferの新しい組み合わせは、元の組み合わせのバンドのサブセットを使ってイメージを表します。
      定義:
      createSubsetSampleModel、クラスSampleModel
      パラメータ:
      bands - このSampleModelのバンドのサブセット
      戻り値:
      このSampleModelのバンドのサブセットを持つSampleModel
      例外:
      RasterFormatException - bands引数の長さがサンプル・モデルのバンド数より大きい場合。
    • getDataElements

      public Object getDataElements(int x, int y, Object obj, DataBuffer data)
      transferType型のプリミティブ配列内の1つのピクセルのデータを返します。 SinglePixelPackedSampleModelの場合、配列は1つの要素を持ち、型はストレージ・データ型と同じになります。 通常は、Objectが自動的に作成され、正しい基本データ型になるように、objにはnullが渡されます。

      次のコードは、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がスローされます。

      定義:
      getDataElements、クラスSampleModel
      パラメータ:
      x - ピクセル位置のX座標。
      y - ピクセル位置のY座標。
      obj - nullでない場合は、ピクセル・データが返されるプリミティブ配列。
      data - イメージ・データを格納するDataBuffer。
      戻り値:
      指定されたピクセルのデータ。
      関連項目:
    • getPixel

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

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

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

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

      public void setDataElements(int x, int y, Object obj, DataBuffer data)
      指定されたDataBufferの1つのピクセルのデータを、TransferType型のプリミティブ配列から設定します。 SinglePixelPackedSampleModelの場合、配列の最初の要素だけが有効なデータを保持します。配列の型はSinglePixelPackedSampleModelのストレージ・データ型と同じである必要があります。

      次のコードは、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がスローされます。

      定義:
      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。
      関連項目:
    • setPixels

      public void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
      矩形のピクセルのサンプルすべてを、配列要素ごとに1つのサンプルが格納されているint配列から設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。
      オーバーライド:
      setPixels、クラスSampleModel
      パラメータ:
      x - 左上のピクセル位置のX座標。
      y - 左上のピクセル位置のY座標。
      w - ピクセル矩形の幅。
      h - ピクセル矩形の高さ。
      iArray - int配列形式の入力サンプル。
      data - イメージ・データを格納する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 - 設定されるバンド。
      s - intの入力サンプル。
      data - イメージ・データを格納するDataBuffer。
      関連項目:
    • setSamples

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