モジュール java.desktop
パッケージ javax.imageio

クラスIIOParam

  • 直系の既知のサブクラス:
    ImageReadParam, ImageWriteParam

    public abstract class IIOParam
    extends Object
    ストリームをデコードまたはエンコードする方法を記述する、すべてのクラスのスーパー・クラスです。 このクラスは、ImageReadParamImageWriteParamで共有されるすべての変数とメソッドを保持します。

    このクラスは、ソース領域およびデスティネーション領域を指定するメカニズムを提供します。 読込み時には、ソースがストリームとなり、メモリー内イメージがデスティネーションとなります。 書込み時には、その逆になります。 書込みの場合、デスティネーション領域はピクセルの置換をサポートするライターだけに使用されます。

    間引きサブサンプリングは、移動可能なサブサンプリング・グリッドを使用してリーダーとライターの両方で指定されます。

    ソースとデスティネーション・バンドのサブセットを選択できます。

    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      protected IIOParamController controller
      activateControllerメソッドが呼び出されたときに、このIIOParamオブジェクトの設定を指定するために使用するIIOParamControllerです。
      protected IIOParamController defaultController
      activateControllerメソッドが呼び出されたときに、このIIOParamオブジェクトの設定を指定するために使用するデフォルトのIIOParamControllerです。
      protected Point destinationOffset
      左上隅のデコードされたピクセルが配置されるデスティネーションのオフセットです。
      protected ImageTypeSpecifier destinationType
      読込み時にデスティネーションのイメージを生成する、または書込み時に出力のカラー・タイプを設定するために使用するImageTypeSpecifierです。
      protected int[] sourceBands
      使用するソース・バンドを示すint配列、またはnullです。
      protected Rectangle sourceRegion
      ソース領域、または何も設定されない場合はnullとなります。
      protected int sourceXSubsampling
      水平方向に適用される間引きサブサンプリングです。
      protected int sourceYSubsampling
      垂直方向に適用される間引きサブサンプリングです。
      protected int subsamplingXOffset
      サブサンプリングする前にサブサンプリング・グリッドに適用される水平方向のオフセットです。
      protected int subsamplingYOffset
      サブサンプリングする前にサブサンプリング・グリッドに適用される垂直方向のオフセットです。
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected IIOParam()
      protectedコンストラクタは、サブクラスだけによって呼び出されます。
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      boolean activateController()
      このIIOParamオブジェクトに対してインストールされているIIOParamControllerをアクティブにし、結果の値を返します。
      IIOParamController getController()
      現在インストールされているIIOParamControllerを返します。
      IIOParamController getDefaultController()
      デフォルトのIIOParamControllerがある場合は、現在インストールされているコントローラとは関係なく、これを返します。
      Point getDestinationOffset()
      ピクセルが配置されるデスティネーション・イメージのオフセットを返します。
      ImageTypeSpecifier getDestinationType()
      ImageTypeSpecifierとして、setDestination(ImageTypeSpecifier)の呼出しによって設定された場合、読込みによって返されるイメージのタイプを返します。
      int[] getSourceBands()
      使用するソース・バンドのセットを返します。
      Rectangle getSourceRegion()
      使用するソース領域を返します。
      int getSourceXSubsampling()
      ピクセルごとに浮き出るソース列の数を返します。
      int getSourceYSubsampling()
      ピクセルごとに浮き出るソース行の数を返します。
      int getSubsamplingXOffset()
      サブサンプリング・グリッドの水平方向のオフセットを返します。
      int getSubsamplingYOffset()
      サブサンプリング・グリッドの垂直方向のオフセットを返します。
      boolean hasController()
      このIIOParamオブジェクトにインストールされたコントローラがある場合はtrueを返します。
      void setController​(IIOParamController controller)
      activateControllerメソッドを呼び出して、すべてのデフォルト・コントローラをオーバーライドするときに、このIIOParamオブジェクトの設定を指定するために使用するIIOParamControllerを設定します。
      void setDestinationOffset​(Point destinationOffset)
      読込み時の場合は、将来デコードされるピクセルが配置されるオフセット、書込み時の場合は、領域が書き込まれるオフセットをデスティネーション・イメージに指定します。
      void setDestinationType​(ImageTypeSpecifier destinationType)
      ImageTypeSpecifierを使用して、目的のイメージ形式をデスティネーション・イメージに設定します。
      void setSourceBands​(int[] sourceBands)
      使用するソース・バンドのインデックスを設定します。
      void setSourceRegion​(Rectangle sourceRegion)
      処理対象のソース領域を設定します。
      void setSourceSubsampling​(int sourceXSubsampling, int sourceYSubsampling, int subsamplingXOffset, int subsamplingYOffset)
      間引きサブサンプリングを指定して入出力に適用します。
    • フィールドの詳細

      • sourceRegion

        protected Rectangle sourceRegion
        ソース領域、または何も設定されない場合はnullとなります。
      • sourceXSubsampling

        protected int sourceXSubsampling
        水平方向に適用される間引きサブサンプリングです。 デフォルト値は1です。 値は必ず、正にしてください。
      • sourceYSubsampling

        protected int sourceYSubsampling
        垂直方向に適用される間引きサブサンプリングです。 デフォルト値は1です。 値は必ず、正にしてください。
      • subsamplingXOffset

        protected int subsamplingXOffset
        サブサンプリングする前にサブサンプリング・グリッドに適用される水平方向のオフセットです。 最初に使用するピクセルは、領域の原点から、領域が指定されない場合はイメージからこの量がオフセットされます。
      • subsamplingYOffset

        protected int subsamplingYOffset
        サブサンプリングする前にサブサンプリング・グリッドに適用される垂直方向のオフセットです。 最初に使用するピクセルは、領域の原点から、領域が指定されない場合はイメージからこの量がオフセットされます。
      • sourceBands

        protected int[] sourceBands
        使用するソース・バンドを示すint配列、またはnullです。 nullの場合、使用するソース・バンドのセットはsetSourceBandsメソッドのコメントに記述されているとおりです。 負の値は使用できません。
      • destinationType

        protected ImageTypeSpecifier destinationType
        読込み時にデスティネーションのイメージを生成する、または書込み時に出力のカラー・タイプを設定するために使用するImageTypeSpecifierです。 何も設定されていない場合、値はnullになります。 デフォルト値はnullです。
      • destinationOffset

        protected Point destinationOffset
        左上隅のデコードされたピクセルが配置されるデスティネーションのオフセットです。 デフォルトの値は(0, 0)です。
      • defaultController

        protected IIOParamController defaultController
        activateControllerメソッドが呼び出されたときに、このIIOParamオブジェクトの設定を指定するために使用するデフォルトのIIOParamControllerです。 このデフォルトはサブクラスで設定します。サブクラスはそれ自体のパラメータ設定用のデフォルト・コントローラ(通常はGUI)を提供します。
        関連項目:
        IIOParamController, getDefaultController(), activateController()
    • コンストラクタの詳細

      • IIOParam

        protected IIOParam()
        protectedコンストラクタは、サブクラスだけによって呼び出されます。
    • メソッドの詳細

      • setSourceRegion

        public void setSourceRegion​(Rectangle sourceRegion)
        処理対象のソース領域を設定します。 処理対象の領域は、ソース・イメージの左上隅をピクセル(0, 0)として、下方および右方向に値を増加させる矩形で記述されます。 使用する実際のピクセル数は、setSourceSubsamplingで設定されるサブサンプリング係数によります。 サブサンプリングの数がゼロになるように設定された場合、IllegalStateExceptionがスローされます。

        このメソッドによって指定された処理対象のソース領域は、実際の入出力時のデスティネーションのオフセット、幅、および高さとともにソースの境界内にちょうど収まるようにクリップされます。

        sourceRegionの値nullは任意の領域の指定を削除して、イメージ全体を使用できるようにします。

        パラメータ:
        sourceRegion - 処理対象のソース領域を指定するRectangleまたはnull
        例外:
        IllegalArgumentException - sourceRegionnull以外の場合で、sourceRegion.xsourceRegion.yのいずれかが負の場合。
        IllegalArgumentException - sourceRegionnull以外の場合で、sourceRegion.widthsourceRegion.heightのいずれかが負または0の場合。
        IllegalStateException - 領域が間引きされた幅または高さゼロを持つような、サブサンプリングの場合。
        関連項目:
        getSourceRegion(), setSourceSubsampling(int, int, int, int), setDestinationOffset(java.awt.Point), getDestinationOffset()
      • getSourceRegion

        public Rectangle getSourceRegion()
        使用するソース領域を返します。 戻り値はsetSourceRegionの直前の呼出しによって設定された値です。領域セットがない場合はnullになります。
        戻り値:
        Rectangleとしての処理対象ソース領域、またはnull
        関連項目:
        setSourceRegion(java.awt.Rectangle)
      • setSourceSubsampling

        public void setSourceSubsampling​(int sourceXSubsampling,
                                         int sourceYSubsampling,
                                         int subsamplingXOffset,
                                         int subsamplingYOffset)
        間引きサブサンプリングを指定して入出力に適用します。 sourceXSubsamplingおよびsourceYSubsamplingパラメータは、サブサンプリング周期、つまりすべてのソース・ピクセルのあとに浮き出る行と列の数を指定します。 特に、周期1はすべての行または列を使用し、周期2は1つおきに行または列を使用します。 subsamplingXOffsetおよびsubsamplingYOffsetパラメータは、最初に間引きされたピクセルの領域またはイメージの起点からのオフセットを指定します。 非常に大きなソース・イメージを、間引きされた完全なイメージに組み立てられるデスティネーション領域にサブサンプリングする場合、サブサンプル・グリッドの起点を調整すると、継ぎ目を避けるのに役立ちます。 通常は、これらのパラメータは0のままにしておきます。

        使用するピクセル数と走査線の数は次のように計算されます。

        走査線の間引きされたピクセルの数は、次の数式で与えられます。

        truncate[(width - subsamplingXOffset + sourceXSubsampling - 1) / sourceXSubsampling]

        幅がゼロであるような領域の場合、IllegalStateExceptionがスローされます。

        使用する走査線の数は同じように計算されます。

        サブサンプリング・グリッドを、ソース領域の原点以外の場所から起動させる設定は、大きなイメージの間引きされたタイルを作成するために領域が使用される場合に役立ちます。ここでは、タイルの幅と高さはサブサンプリング周期の倍数ではありません。 サブサンプリング・グリッドがタイル間の一貫性を維持していない場合、タイルの境界にアーティファクトが生じます。 各タイルのサブサンプリング・グリッドのオフセットを調整して補正することにより、これらのアーティファクトを回避できます。 ただし、アーティファクトを回避するためには、すべてのタイルを同じサイズにはできません。 この場合に使用するグリッド・オフセットは次の数式で得られます。
        grid offset = [period - (region offset modulo period)] modulo period)

        sourceXSubsamplingまたはsourceYSubsamplingのいずれかが0または負の場合、IllegalArgumentExceptionがスローされます。

        subsamplingXOffsetまたはsubsamplingYOffsetのいずれかが負、あるいは対応する周期より大きいか等しい場合、IllegalArgumentExceptionがスローされます。

        unsetSourceSubsamplingメソッドはありません。単にsetSourceSubsampling(1, 1, 0, 0)を呼び出してデフォルト値を復元します。

        パラメータ:
        sourceXSubsampling - ピクセル間に浮き出る列数。
        sourceYSubsampling - ピクセル間に浮き出る行数。
        subsamplingXOffset - 領域内の最初のサブサンプルの水平方向のオフセット。領域が設定されていない場合は、イメージ内の最初のサブサンプルの水平方向のオフセット。
        subsamplingYOffset - 領域内の最初のサブサンプルの水平方向のオフセット。領域が設定されていない場合は、イメージ内の最初のサブサンプルの水平方向のオフセット。
        例外:
        IllegalArgumentException - いずれかの周期が負または0の場合、またはグリッドのオフセットが負か対応する周期より大きい場合。
        IllegalStateException - 間引きされた出力がピクセルを保持していないような、ソース領域の場合。
      • getSourceXSubsampling

        public int getSourceXSubsampling()
        ピクセルごとに浮き出るソース列の数を返します。

        setSourceSubsamplingが呼び出されなかった場合、正しい値1が返されます。

        戻り値:
        ソース・サブサンプリング周期X
        関連項目:
        setSourceSubsampling(int, int, int, int), getSourceYSubsampling()
      • getSourceYSubsampling

        public int getSourceYSubsampling()
        ピクセルごとに浮き出るソース行の数を返します。

        setSourceSubsamplingが呼び出されなかった場合、正しい値1が返されます。

        戻り値:
        ソース・サブサンプリングの周期Y
        関連項目:
        setSourceSubsampling(int, int, int, int), getSourceXSubsampling()
      • getSubsamplingXOffset

        public int getSubsamplingXOffset()
        サブサンプリング・グリッドの水平方向のオフセットを返します。

        setSourceSubsamplingが呼び出されなかった場合、正しい値0が返されます。

        戻り値:
        ソース・サブサンプリング・グリッドのXオフセット
        関連項目:
        setSourceSubsampling(int, int, int, int), getSubsamplingYOffset()
      • getSubsamplingYOffset

        public int getSubsamplingYOffset()
        サブサンプリング・グリッドの垂直方向のオフセットを返します。

        setSourceSubsamplingが呼び出されなかった場合、正しい値0が返されます。

        戻り値:
        ソース・サブサンプリング・グリッドのYオフセット
        関連項目:
        setSourceSubsampling(int, int, int, int), getSubsamplingXOffset()
      • setSourceBands

        public void setSourceBands​(int[] sourceBands)
        使用するソース・バンドのインデックスを設定します。 インデックスの複製は使用できません。

        nullは、すべてのソース・バンドが使用されることを示します。

        使用可能な最大ソース・バンド・インデックスより大きい値が指定された場合、または使用するソース・バンドとデスティネーション・バンドの数が異なる場合、IllegalArgumentExceptionは、読込み時にリーダーまたはライターによってスローされます。 ImageReader.checkReadParamBandSettingsメソッドは、このテストを自動化するために使用されます。

        意味上では、コピーは配列から作成されます。この呼出しのあとに、配列の内容が変更されても、IIOParamには何の影響もありません。

        パラメータ:
        sourceBands - 使用する整数型バンド・インデックスの配列。
        例外:
        IllegalArgumentException - sourceBandsが負または重複する値を保持する場合。
        関連項目:
        getSourceBands(), ImageReadParam.setDestinationBands(int[]), ImageReader.checkReadParamBandSettings(javax.imageio.ImageReadParam, int, int)
      • getSourceBands

        public int[] getSourceBands()
        使用するソース・バンドのセットを返します。 戻り値は、直前のsetSourceBandsの呼出しによって設定された値、またはsetSourceBandsを呼び出さなかった場合はnullです。

        意味上では、返される配列はコピーです。この呼出しのあとに、配列の内容が変更されても、IIOParamには何の影響もありません。

        戻り値:
        使用するソース・バンドのセット、またはnull
        関連項目:
        setSourceBands(int[])
      • setDestinationType

        public void setDestinationType​(ImageTypeSpecifier destinationType)
        ImageTypeSpecifierを使用して、目的のイメージ形式をデスティネーション・イメージに設定します。

        読込み時に、このメソッドを使用してデスティネーションのレイアウトが設定された場合、ImageReader readメソッドの各呼出しは、指定されたタイプの指示子によって指定された形式を使用して、新しいBufferedImageを返します。 副作用として、ImageReadParam.setDestination(BufferedImage)によって設定されるすべてのデスティネーションBufferedImageは、デスティネーションとして設定されなくなります。 言い換えると、このメソッドはsetDestination((BufferedImage)null)の呼び出しと考えることもできます。

        書込み時に、デスティネーションのタイプはイメージのカラー・タイプを決めるために使用される場合があります。 SampleModel情報は無視されて、nullになります。 たとえば、4バンドのイメージはCMYKまたはRGBAデータのいずれかで表せます。 デスティネーションのタイプが設定された場合、そのColorModelはイメージ自体にあるすべてのColorModelをオーバーライドします。 これは、イメージのColorModelが、書き込まれたバンドのサブセットではなくイメージ全体を参照するので、setSourceBandsを使用する場合に重要です。

        パラメータ:
        destinationType - デスティネーションのレイアウトとカラー・タイプを決定するために使用するImageTypeSpecifier
        関連項目:
        getDestinationType()
      • getDestinationType

        public ImageTypeSpecifier getDestinationType()
        ImageTypeSpecifierとして、setDestination(ImageTypeSpecifier)の呼出しによって設定された場合、読込みによって返されるイメージのタイプを返します。 設定されなかった場合、nullが返されます。
        戻り値:
        デスティネーションのタイプを記述するImageTypeSpecifier、またはnull
        関連項目:
        setDestinationType(javax.imageio.ImageTypeSpecifier)
      • setDestinationOffset

        public void setDestinationOffset​(Point destinationOffset)
        読込み時の場合は、将来デコードされるピクセルが配置されるオフセット、書込み時の場合は、領域が書き込まれるオフセットをデスティネーション・イメージに指定します。

        読込み時に、BufferedImageデスティネーション内に書き込まれる領域は、このオフセットで開始し、処理対象のソース領域、サブサンプリング・パラメータ、およびデスティネーションの境界によって決定される幅と高さを持ちます。

        通常の書込みは、このメソッドの影響を受けません。ImageWriter.replacePixelsを使用して実行される書き込みだけが影響を受けます。 このような書込みの場合、指定されたオフセットはピクセルが変更される出力ストリーム・イメージ内にあります。

        unsetDestinationOffsetメソッドはありません。単にsetDestinationOffset(new Point(0, 0))を呼び出してデフォルト値を復元します。

        パラメータ:
        destinationOffset - Pointとしての、デスティネーションのオフセット。
        例外:
        IllegalArgumentException - destinationOffsetnullの場合。
        関連項目:
        getDestinationOffset(), ImageWriter.replacePixels(java.awt.image.RenderedImage, javax.imageio.ImageWriteParam)
      • getDestinationOffset

        public Point getDestinationOffset()
        ピクセルが配置されるデスティネーション・イメージのオフセットを返します。

        setDestinationOffsetsが呼び出されなかった場合、XおよびYの値がゼロのPointが返されます。これは正しい値です。

        戻り値:
        Pointとしての、デスティネーションのオフセット。
        関連項目:
        setDestinationOffset(java.awt.Point)
      • setController

        public void setController​(IIOParamController controller)
        activateControllerメソッドを呼び出して、すべてのデフォルト・コントローラをオーバーライドするときに、このIIOParamオブジェクトの設定を指定するために使用するIIOParamControllerを設定します。 引数がnullの場合は、デフォルトのコントローラを含め、どのコントローラも使用されません。 デフォルトのコントローラを復元するには、setController(getDefaultController())を使用します。
        パラメータ:
        controller - 適切なIIOParamController、またはnull
        関連項目:
        IIOParamController, getController(), getDefaultController(), hasController(), activateController()
      • activateController

        public boolean activateController()
        このIIOParamオブジェクトに対してインストールされているIIOParamControllerをアクティブにし、結果の値を返します。 このメソッドがtrueを返す場合、このIIOParamオブジェクトのすべての値は次の読み込みまたは書込み操作で使用する準備ができています。 falseが返される場合は、このオブジェクト内の設定値への影響はありません。つまり、ユーザーにより操作が取り消されました。

        通常、コントローラは、特定のプラグインに対するIIOParamのサブクラスのユーザー・インタフェースを提供するGUIです。 ただし、コントローラはGUIである必要はありません。

        戻り値:
        コントローラが通常どおり完了した場合はtrue
        例外:
        IllegalStateException - コントローラが現在インストールされていない場合。
        関連項目:
        IIOParamController, setController(IIOParamController), getController(), getDefaultController(), hasController()