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

クラスMultiPixelPackedSampleModel



  • public class MultiPixelPackedSampleModel
    extends SampleModel
    MultiPixelPackedSampleModelクラスは、単一バンド化されたイメージを表現し、複数の単一サンプル・ピクセルを1つのデータ要素にパックできます。 ピクセルは、複数のデータ要素にまたがることはできません。 データ型は、DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTです。 各ピクセルは2のべき乗のビット数でなければならず、2のべき乗個のピクセルが、1つのデータ要素にぴったり収まらなければいけません。 ピクセル・ビット・ストライドは、1ピクセルあたりのビット数と同じです。 走査線ストライドはデータ要素内にあり、最後のいくつかのデータ要素が未使用のピクセルでパディングされます。 データ・ビット・オフセットは、DataBufferの先頭から最初のピクセルまでのビット単位のオフセットであり、ピクセル・ビット・ストライドの倍数です。

    次のコードは、DataBuffer dataからピクセルx, yのビットを抽出し、型dataTypeのデータ要素にピクセル・データを格納することを示しています:

    
          int dataElementSize = DataBuffer.getDataTypeSize(dataType);
          int bitnum = dataBitOffset + x*pixelBitStride;
          int element = data.getElem(y*scanlineStride + bitnum/dataElementSize);
          int shift = dataElementSize - (bitnum & (dataElementSize-1))
                      - pixelBitStride;
          int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
     
    • コンストラクタの詳細

      • MultiPixelPackedSampleModel

        public MultiPixelPackedSampleModel​(int dataType,
                                           int w,
                                           int h,
                                           int numberOfBits)
        指定されたデータ型、幅、高さ、および1ピクセルあたりのビット数を持つMultiPixelPackedSampleModelを構築します。
        パラメータ:
        dataType - サンプル格納用のデータ形式
        w - 記述されるイメージ・データの領域の幅(ピクセル単位)
        h - 記述されるイメージ・データの領域の高さ(ピクセル単位)
        numberOfBits - ピクセルごとのビット数
        例外:
        IllegalArgumentException - dataTypeDataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれでもない場合
      • MultiPixelPackedSampleModel

        public MultiPixelPackedSampleModel​(int dataType,
                                           int w,
                                           int h,
                                           int numberOfBits,
                                           int scanlineStride,
                                           int dataBitOffset)
        指定されたデータ型、幅、高さ、1ピクセルあたりのビット数、走査線ストライド、およびデータ・ビット・オフセットを持つMultiPixelPackedSampleModelを構築します。
        パラメータ:
        dataType - サンプル格納用のデータ形式
        w - 記述されるイメージ・データの領域の幅(ピクセル単位)
        h - 記述されるイメージ・データの領域の高さ(ピクセル単位)
        numberOfBits - ピクセルごとのビット数
        scanlineStride - イメージ・データの走査線ストライド
        dataBitOffset - 記述されているイメージ・データ領域のデータ・ビット・オフセット
        例外:
        RasterFormatException - 1ピクセルあたりのビット数が2のべき乗でない場合、あるいは2のべき乗個のピクセルが1データ要素に収まらない場合。
        IllegalArgumentException - wまたはhが0以下である場合
        IllegalArgumentException - dataTypeDataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのいずれでもない場合
    • メソッドの詳細

      • createCompatibleSampleModel

        public SampleModel createCompatibleSampleModel​(int w,
                                                       int h)
        指定された幅と高さを持つ新しいMultiPixelPackedSampleModelを作成します。 新しいMultiPixelPackedSampleModelのストレージ・データ型と1ピクセルあたりのビット数は、このMultiPixelPackedSampleModelと同じです。
        定義:
        createCompatibleSampleModel、クラス: SampleModel
        パラメータ:
        w - 指定された幅
        h - 指定された高さ
        戻り値:
        指定された幅と高さを持ち、このMultiPixelPackedSampleModelとストレージ・データ型および1ピクセルあたりのビット数が同じSampleModel
        例外:
        IllegalArgumentException - wまたはhが0以下である場合
      • createDataBuffer

        public DataBuffer createDataBuffer​()
        このMultiPixelPackedSampleModelに対応するDataBufferを作成します。 DataBufferオブジェクトのデータ型とサイズは、このMultiPixelPackedSampleModelと同じです。 DataBufferは1つのバンクを持ちます。
        定義:
        createDataBuffer、クラス: SampleModel
        戻り値:
        このMultiPixelPackedSampleModelとデータ型およびサイズが同じ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 - 指定されたピクセルのX座標
        y - 指定されたピクセルのY座標
        戻り値:
        指定されたピクセルのオフセット。
      • getBitOffset

        public int getBitOffset​(int x)
        走査線のx番目のピクセルとして格納されているデータ要素のオフセットをビット数で返します。 このオフセットは、すべての走査線で同じです。
        パラメータ:
        x - 指定されたピクセル
        戻り値:
        指定されたピクセルのビット・オフセット
      • getScanlineStride

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

        public int getPixelBitStride​()
        ピクセル・ビット・ストライドをビット数で返します。 この値は、1ピクセルあたりのビット数と同じです。
        戻り値:
        このMultiPixelPackedSampleModelpixelBitStride
      • getDataBitOffset

        public int getDataBitOffset​()
        データ・ビット・オフセットをビット数で返します。
        戻り値:
        このMultiPixelPackedSampleModeldataBitOffset
      • createSubsetSampleModel

        public SampleModel createSubsetSampleModel​(int[] bands)
        このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいMultiPixelPackedSampleModelを生成します。 MultiPixelPackedSampleModelはバンドを1つしか持たないので、bands引数は長さ1でゼロ番目のバンドを示す必要があります。
        定義:
        createSubsetSampleModel、クラス: SampleModel
        パラメータ:
        bands - 指定されたバンド
        戻り値:
        このMultiPixelPackedSampleModelのバンドのサブセットを持つ新しいSampleModel
        例外:
        RasterFormatException - 要求されたバンド数が1でない場合。
        IllegalArgumentException - wまたはhが0以下である場合
      • getSample

        public int getSample​(int x,
                             int y,
                             int b,
                             DataBuffer data)
        (x, y)に位置するピクセルの、指定されたバンド内のサンプルをintとして返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。
        定義:
        getSample、クラス: SampleModel
        パラメータ:
        x - 指定されたピクセルのX座標
        y - 指定されたピクセルのY座標
        b - 返されるバンド(0と見なされます)
        data - イメージ・データを格納するDataBuffer
        戻り値:
        指定されたピクセルのサンプルが格納されている、指定されたバンド
        例外:
        ArrayIndexOutOfBoundsException - 指定された座標が範囲外にある場合。
        関連項目:
        setSample(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 - 返されるバンド(0と見なされます)
        s - intの入力サンプル
        data - イメージ・データの格納先のDataBuffer
        例外:
        ArrayIndexOutOfBoundsException - 座標が範囲外にある場合。
        関連項目:
        getSample(int, int, int, DataBuffer)
      • getDataElements

        public Object getDataElements​(int x,
                                      int y,
                                      Object obj,
                                      DataBuffer data)
        transferType型のプリミティブ配列内の1つのピクセルのデータを返します。 MultiPixelPackedSampleModelの場合、配列は1つの要素を持ち、型は1つのピクセルを格納できるDataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのうちの最小のものになります。 一般に、objnullで渡されるので、Objectは自動的に作成され、正しい基本データ型になります。

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

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

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

        定義:
        getDataElements、クラス: SampleModel
        パラメータ:
        x - 指定されたピクセルのX座標
        y - 指定されたピクセルのY座標
        obj - ピクセル・データを返すプリミティブ配列、またはnull
        data - イメージ・データを格納するDataBuffer
        戻り値:
        指定されたピクセルのデータが格納されているObject
        例外:
        ClassCastException - objがTransferType型のプリミティブ配列でなく、nullでもない場合
        ArrayIndexOutOfBoundsException - 座標が境界内にない場合。またはobjnullではないかピクセル・データを保持するのに十分な大きさではない場合
        関連項目:
        setDataElements(int, int, Object, DataBuffer)
      • getPixel

        public int[] getPixel​(int x,
                              int y,
                              int[] iArray,
                              DataBuffer data)
        int配列の先頭要素の、指定された1つのバンドのピクセルを返します。 座標が境界内にない場合は、ArrayIndexOutOfBoundsExceptionがスローされます。
        オーバーライド:
        getPixel、クラス: SampleModel
        パラメータ:
        x - 指定されたピクセルのX座標
        y - 指定されたピクセルのY座標
        iArray返されるピクセルが格納される配列、またはnull
        data - イメージ・データの格納先のDataBuffer
        戻り値:
        指定されたピクセルが格納されている配列
        例外:
        ArrayIndexOutOfBoundsException - 座標が範囲外にある場合
        関連項目:
        setPixel(int, int, int[], DataBuffer)
      • setDataElements

        public void setDataElements​(int x,
                                    int y,
                                    Object obj,
                                    DataBuffer data)
        指定されたDataBufferの1つのピクセルのデータを、TransferType型のプリミティブ配列から設定します。 MultiPixelPackedSampleModelの場合は、配列の先頭要素だけが有効なデータを保持し、型は1つのピクセルを保持できるDataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT、またはDataBuffer.TYPE_INTのうちの最小のものになります。

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

               MultiPixelPackedSampleModel mppsm1, mppsm2;
               DataBufferInt db1, db2;
               mppsm2.setDataElements(x, y, mppsm1.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)
      • 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)