モジュール java.desktop
パッケージ 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];
     

    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      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配列の指定されたピクセルの矩形のすべてのサンプルを返します。配列要素ごとに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[] getSampleSize()
      すべてのバンドのサンプルあたりのビット数を返します。
      int getSampleSize​(int band)
      指定されたバンドのサンプルあたりのビット数を返します。
      int getScanlineStride()
      この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配列から設定します。
    • コンストラクタの詳細

      • 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のいずれでもない場合
    • メソッドの詳細

      • 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。
        戻り値:
        指定されたピクセルのデータ。
        関連項目:
        setDataElements(int, int, Object, 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。
        戻り値:
        指定されたピクセルのすべてのサンプル
        関連項目:
        setPixel(int, int, int[], 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。
        戻り値:
        指定されたピクセル領域のサンプル
        関連項目:
        setPixels(int, int, int, int, int[], 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。
        戻り値:
        指定されたピクセルに対する指定されたバンドのサンプル
        関連項目:
        setSample(int, int, int, int, 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。
        戻り値:
        指定されたピクセル領域の指定されたバンドのサンプル
        関連項目:
        setSamples(int, int, int, int, int, int[], 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。
        関連項目:
        getDataElements(int, int, Object, 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。
        関連項目:
        getPixel(int, int, int[], 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。
        関連項目:
        getPixels(int, int, int, int, int[], 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。
        関連項目:
        getSample(int, int, int, 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。
        関連項目:
        getSamples(int, int, int, int, int, int[], DataBuffer)