モジュール 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を作成します。
      boolean equals​(Object o)
      このオブジェクトと他のオブジェクトが等しいかどうかを示します。
      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の走査線ストライドを返します。
      int hashCode​()
      オブジェクトのハッシュ・コード値を返します。
      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)
      • equals

        public boolean equals​(Object o)
        次のクラスからコピーされた説明: Object
        このオブジェクトと他のオブジェクトが等しいかどうかを示します。

        equalsメソッドは、null以外のオブジェクト参照での同値関係を実装します。

        • 反射性(reflexive): null以外の参照値xについて、x.equals(x)trueを返します。
        • 対称性(symmetric): null以外の参照値xおよびyについて、y.equals(x)trueを返す場合に限り、x.equals(y)trueを返します。
        • 推移性(transitive): null以外の参照値xy、およびzについて、x.equals(y)trueを返し、y.equals(z)trueを返す場合、x.equals(z)trueを返します。
        • 一貫性(consistent): null以外の参照値xおよびyについて、x.equals(y)の複数の呼出しは、このオブジェクトに対するequalsによる比較で使われた情報が変更されていなければ、一貫してtrueを返すか、一貫してfalseを返します。
        • null以外の参照値xについて、x.equals(null)falseを返します。

        Objectクラスのequalsメソッドは、もっとも比較しやすいオブジェクトの同値関係を実装します。つまり、null以外の参照値xyについて、このメソッドはxyが同じオブジェクトを参照する(x == ytrue)場合にだけtrueを返します。

        通常、このメソッドをオーバーライドする場合は、hashCodeメソッドを常にオーバーライドして、「等価なオブジェクトは等価なハッシュ・コードを保持する必要がある」というhashCodeメソッドの汎用規約に従う必要があることに留意してください。

        オーバーライド:
        equals、クラス: Object
        パラメータ:
        o - 比較対象の参照オブジェクト。
        戻り値:
        このオブジェクトがobj引数と同じである場合はtrue、それ以外の場合はfalse
        関連項目:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode​()
        次のクラスからコピーされた説明: Object
        オブジェクトのハッシュ・コード値を返します。 このメソッドは、HashMapによって提供されるハッシュ表などの、ハッシュ表の利点のためにサポートされています。

        hashCodeの一般的な規則は次のとおりです。

        • Javaアプリケーションの実行中に同じオブジェクトに対して複数回呼び出された場合は常に、このオブジェクトに対するequalsの比較で使用される情報が変更されていなければ、hashCodeメソッドは常に同じ整数を返す必要があります。 ただし、この整数は同じアプリケーションの実行ごとに同じである必要はありません。
        • equals(Object)メソッドに従って2つのオブジェクトが等しい場合は、2つの各オブジェクトに対するhashCodeメソッドの呼出しによって同じ整数の結果が生成される必要があります。
        • Object.equals(java.lang.Object)メソッドに従って2つのオブジェクトが等しくない場合は、2つの各オブジェクトに対するhashCodeメソッドの呼出しによって異なる整数の結果が生成される必要はありません ただし、プログラマは、等しくないオブジェクトに対して異なる整数の結果を生成すると、ハッシュ表のパフォーマンスが向上する可能性があることに注意するようにしてください。

        クラスObjectによって定義されたhashCodeメソッドは、可能なかぎり、異なるオブジェクトに対して異なる整数を返します。 (hashCodeは、ある時点におけるオブジェクト・メモリー・アドレスの関数として実装されても実装されなくてもよい。)

        オーバーライド:
        hashCode、クラス: Object
        戻り値:
        このオブジェクトのハッシュ・コード値。
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)