クラスBandedSampleModel


public final class BandedSampleModel extends ComponentSampleModel
このクラスは、バンド・インタリーブ化方式で格納されるイメージ・データを表します。ピクセルの各サンプルは、DataBufferのデータ要素に1つずつ格納されます。 このクラスは、ComponentSampleModelをサブクラス化しますが、バンド・インタリーブ化されたイメージ・データへのアクセスに、ComponentSampleModelを使うよりも効率的な実装を提供します。 通常、このクラスは、各バンドのサンプル・データをDataBufferの別々のバンクに格納したイメージを処理する場合に使用されます。 イメージ・データを直接処理できるように、アクセス用メソッドが提供されています。 ピクセル・ストライドは、同じ走査線上の同じバンドにある2つのサンプルの間にあるデータ配列要素数です。 BandedSampleModelのピクセル・ストライドはその1つです。 走査線ストライドは、指定されたサンプルと次の走査線の同じ列の対応するサンプルとの間のデータ配列要素の数です。 バンド・オフセットは、各バンドが格納されているDataBufferのバンクにある最初のデータ配列要素からそのバンドの最初のサンプルまでのデータ配列要素数を示します。 バンドには0からN-1までの番号が付けられています。 バンク・インデックスは、データ・バッファのバンクと、イメージ・データのバンドとの対応を示します。 このクラスは、TYPE_BYTETYPE_USHORTTYPE_SHORTTYPE_INTTYPE_FLOATおよびTYPE_DOUBLEの各データ型をサポートします。
  • コンストラクタの詳細

    • BandedSampleModel

      public BandedSampleModel(int dataType, int w, int h, int numBands)
      指定されたパラメータを使ってBandedSampleModelを構築します。 ピクセル・ストライドは、1データ要素になります。 走査線ストライドは、幅と同じになります。 各バンドは個別のバンクに格納され、すべてのバンド・オフセットは0になります。
      パラメータ:
      dataType - サンプルの格納のためのデータ型。
      w - 記述されたイメージ・データの領域の幅(単位はピクセル)。
      h - 記述されたイメージ・データの領域の高さ(単位はピクセル)。
      numBands - イメージ・データのバンド数。
      スロー:
      IllegalArgumentException - whの両方が0より大きくない場合
      IllegalArgumentException - whの積がInteger.MAX_VALUEより大きい場合
      IllegalArgumentException - numBandsが > 0でない場合
      IllegalArgumentException - dataTypeがこのサンプル・モデルでサポートされるデータ型でない場合。
    • BandedSampleModel

      public BandedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets)
      指定されたパラメータを使ってBandedSampleModelを構築します。 バンド数は、bandOffsets配列とbankIndices配列の長さ(これら2つの配列は同じ長さであることが必要)から推定されます。 ピクセル・ストライドは、1データ要素になります。
      パラメータ:
      dataType - サンプルの格納のためのデータ型。
      w - 記述されたイメージ・データの領域の幅(単位はピクセル)。
      h - 記述されたイメージ・データの領域の高さ(単位はピクセル)。
      scanlineStride - イメージ・データの走査線ストライド。
      bankIndices - 各バンドのバンク・インデックス。
      bandOffsets - 各バンドのバンド・オフセット。
      スロー:
      IllegalArgumentException - whの両方が0より大きくない場合
      IllegalArgumentException - whの積がInteger.MAX_VALUEより大きい場合
      IllegalArgumentException - scanlineStrideが0より小さい場合
      NullPointerException - bankIndicesnullの場合
      NullPointerException - bandOffsetsnullの場合
      IllegalArgumentException - bandOffsets.lengthが0の場合
      IllegalArgumentException - bankIndicesの長さがbandOffsetsの長さと等しくない場合
      IllegalArgumentException - bandIndicesのバンク・インデックスのいずれかが0より小さい場合
      IllegalArgumentException - dataTypeがこのサンプル・モデルでサポートされるデータ型でない場合
  • メソッドの詳細

    • createCompatibleSampleModel

      public SampleModel createCompatibleSampleModel(int w, int h)
      指定された幅と高さを持つ新しいBandedSampleModelを作成します。 新しいBandedSampleModelのバンド数、ストレージ・データ型、およびバンク・インデックスは、このBandedSampleModelと同じになります。 バンド・オフセットは、バンドのオフセットがw*pixelStrideになり、すべてのバンド・オフセットの最小値が0になるように圧縮されます。
      オーバーライド:
      createCompatibleSampleModel、クラスComponentSampleModel
      パラメータ:
      w - 結果として得られるBandedSampleModelの幅
      h - 結果として得られるBandedSampleModelの高さ
      戻り値:
      指定された幅と高さを持つ新しいBandedSampleModel
      スロー:
      IllegalArgumentException - wまたはhInteger.MAX_VALUEまたはInteger.MIN_VALUEと等しい場合
      IllegalArgumentException - dataTypeがサポートされているデータ型でない場合
    • createSubsetSampleModel

      public SampleModel createSubsetSampleModel(int[] bands)
      このBandedSampleModelのバンドのサブセットを持つ新しいBandedSampleModelを作成します。 新しいBandedSampleModelは、既存のBandedSampleModelと使用できるDataBufferであればどのDataBufferとも組み合わせて使用できます。 新しいBandedSampleModelとDataBufferの組み合わせは、元のBandedSampleModelとDataBufferの組み合わせのバンドのサブセットを持つイメージを表します。
      オーバーライド:
      createSubsetSampleModel、クラスComponentSampleModel
      パラメータ:
      bands - このComponentSampleModelのバンドのサブセット
      戻り値:
      このComponentSampleModelのバンドのサブセットで作成されたComponentSampleModel
      スロー:
      RasterFormatException - バンド数がこのサンプル・モデル内のバンク数より多い場合。
      IllegalArgumentException - dataTypeがサポートされているデータ型でない場合
    • createDataBuffer

      public DataBuffer createDataBuffer()
      このBandedSampleModelに対応するDataBufferを作成します。DataBufferのデータ型、バンク数、およびサイズは、このBandedSampleModelと一致します。
      オーバーライド:
      createDataBuffer、クラスComponentSampleModel
      戻り値:
      このComponentSampleModelとデータ型、バンク数、およびサイズが同じDataBuffer
      スロー:
      IllegalArgumentException - dataTypeがサポートされている型でない場合。
    • getDataElements

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

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

            BandedSampleModel bsm1, bsm2;
            DataBufferInt db1, db2;
            bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
                                 db2);
      
      SampleModelのバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferTypeが同じである場合、2つのDataBuffer/SampleModel間の転送には、getDataElements/setDataElementsを使用するのが適切です。

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

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

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

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

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

      public int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
      指定されたピクセル矩形に使う、指定されたバンド内のサンプルをint配列として返します。データ配列要素にサンプル1個が対応します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。
      オーバーライド:
      getSamples、クラスComponentSampleModel
      パラメータ:
      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型のプリミティブ配列から設定します。 BandedSampleModelの場合、これは同じデータ型になり、サンプルは配列要素ごとに1つ転送されます。

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

            BandedSampleModel bsm1, bsm2;
            DataBufferInt db1, db2;
            bsm2.setDataElements(x, y, bsm1.getDataElements(x, y, null, db1),
                                 db2);
      
      SampleModelのバンド数が同じで、対応するバンドのサンプルあたりのビット数が同じで、TransferTypeが同じである場合、2つのDataBuffer/SampleModel間の転送には、getDataElements/setDataElementsを使用するのが適切です。

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

      オーバーライド:
      setDataElements、クラスComponentSampleModel
      パラメータ:
      x - ピクセル位置のX座標
      y - ピクセル位置のY座標
      obj - nullでない場合は、このオブジェクト内のプリミティブ配列を返す
      data - イメージ・データを格納するDataBuffer
      関連項目:
    • setPixel

      public void setPixel(int x, int y, int[] iArray, DataBuffer data)
      サンプルのint配列を入力として使ってDataBuffer内のピクセルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。
      オーバーライド:
      setPixel、クラスComponentSampleModel
      パラメータ:
      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、クラスComponentSampleModel
      パラメータ:
      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、クラスComponentSampleModel
      パラメータ:
      x - ピクセル位置のX座標
      y - ピクセル位置のY座標
      b - 設定されるバンド
      s - intの入力サンプル
      data - イメージ・データを格納するDataBuffer
      関連項目:
    • setSample

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

      public void setSample(int x, int y, int b, double s, DataBuffer data)
      doubleを入力として使用し、DataBuffer内の(x, y)に位置するピクセルの、指定されたバンド内のサンプルを設定します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。
      オーバーライド:
      setSample、クラスComponentSampleModel
      パラメータ:
      x - ピクセル位置のX座標
      y - ピクセル位置のY座標
      b - 設定されるバンド
      s - doubleでの入力サンプル
      data - イメージ・データを格納するDataBuffer
      関連項目:
    • setSamples

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