モジュール java.desktop

クラスJPEGImageWriteParam



  • public class JPEGImageWriteParam
    extends ImageWriteParam
    このクラスは、組み込みJPEGライター・プラグインを使用する場合にJPEGの数量化表およびハフマン表を設定する機能と、イメージ用に最適化されたハフマン表を計算するよう要求する機能を追加します。 このクラスのインスタンスは、組み込みJPEG ImageWritergetDefaultImageWriteParamメソッドから返されます。

    これらを追加する主な目的は、表の指定を、省略されたストリームのエンコーディングで使用できるようにすることです。 組み込みJPEGライターは、通常のImageWriteParamも受け入れます。この場合、ライターは必要な表を内部的に構築します。

    どちらの場合も、ImageWriteParamの品質の設定には、基本となるライブラリの場合と同じ意味があります。1.00はすべての1の数量化表を、0.75は「標準の」視覚的に損失のない数量化表を、0.00はすべての255の数量化表を意味します。

    省略されたストリームの表は通常、表だけを含む省略されたストリームを最初に書き込むことにより指定されますが、アプリケーションによっては表が前もって固定されています。 このクラスにより、表をクライアント・コードから直接指定できるようになります。

    通常、表はライターに渡されたIIOMetadataオブジェクトで指定され、これらのオブジェクトに含まれる表はすべてストリームに書き込まれます。 メタデータに表が指定されていない場合は、省略されたストリームが書き込まれます。 メタデータに表が含まれておらず、JPEGImageWriteParamで表が指定されない場合、省略されたストリームは「標準の」視覚的に損失のない表を使用してエンコードされます。 最初に表をストリームに書き込まないで、省略されたストリームを書き込む必要がある場合は、表の指定にこのクラスが必要です。 このクラスを使用するためには、ライターに渡されたメタデータ・オブジェクトに表を格納しても、ストリーム・メタデータを提供してもいけません。 デフォルト表の詳細は、JPEGQTableおよびJPEGHuffmanTableを参照してください。

    ライターのgetDefaultWriteParamメソッドから返されるデフォルトのJPEGImageWriteParamには表は格納されていません。 デフォルトの表は、ライターから返されるデフォルトのIIOMetadataオブジェクトに含まれています。

    メタデータに表が格納されている場合、JPEGImageWriteParamで指定される表は無視されます。 さらに、表のセットが書き込まれると、同じストリームまたは別のストリームへのその後の書込みに対してそれらの表をオーバーライドできるのは、メタデータ内の表だけです。 このクラスを使用して新しい表を指定するためには、ライターのresetメソッドを呼び出す必要があります。

    組み込みJPEGプラグインの操作の詳細については、「JPEGメタデータ形式の仕様と使用法に関する注記」を参照してください。

    • コンストラクタの詳細

      • JPEGImageWriteParam

        public JPEGImageWriteParam​(Locale locale)
        JPEGImageWriteParamを構築します。 タイリングはサポートされません。 プログレッシブ・エンコーディングはサポートされます。 デフォルトのプログレッシブ・モードはMODE_DISABLEDです。 JPEGと呼ばれる1つの圧縮形式がサポートされます。 デフォルトの圧縮品質は0.75です。
        パラメータ:
        locale - 圧縮方式名と品質説明をローカライズするためにスーパー・クラスが使用するLocale、またはnull
    • メソッドの詳細

      • isCompressionLossless

        public boolean isCompressionLossless​()
        JPEGプラグインは損失の発生する圧縮だけをサポートするので、falseを返します。
        オーバーライド:
        isCompressionLossless、クラス: ImageWriteParam
        戻り値:
        false
        例外:
        IllegalStateException - 圧縮モードがMODE_EXPLICITでない場合。
      • getCompressionQualityDescriptions

        public String[] getCompressionQualityDescriptions​()
        クラスからコピーされた説明: ImageWriteParam
        圧縮品質レベルの表示または設定のためのユーザー・インタフェースの一部として、getCompressionQualityValuesとともに使用できるStringの配列を返します。 インデックスiを持つStringは、getCompressionQualityValues[i]からgetCompressionQualityValues[i+1]までの品質レベル範囲の説明を提供します。 getCompressionQualityValuesから返された配列の長さは、getCompressionQualityDescriptionsから返された配列の長さより、常に長くなります。

        例として、文字列「Good」、「Better」、「Best」は、範囲[0, .33)[.33, .66)[.66, 1.0]に関連付けることができます。 この場合、getCompressionQualityDescriptions{ "Good", "Better", "Best" }を返し、getCompressionQualityValues{ 0.0F, .33F, .66F, 1.0F }を返します。

        説明が使用できない場合、nullが返されます。 getCompressionQualityValuesからnullが返される場合、このメソッドもnullを返す必要があります。

        説明は、nullでない場合、getLocaleが返したLocaleに対してローカライズする必要があります。

        複数の圧縮方式があり、そのどれもが設定されていない場合、IllegalStateExceptionがスローされます。

        デフォルト実装では、圧縮がサポートされるか、圧縮モードがMODE_EXPLICITであるかを調べます。 これに当てはまる場合、getCompressionTypes()nullのとき、あるいはgetCompressionType()nullでないときにnullを返します。

        オーバーライド:
        getCompressionQualityDescriptions、クラス: ImageWriteParam
        戻り値:
        圧縮品質レベルのローカライズされた説明を含むStringの配列。
        関連項目:
        ImageWriteParam.getCompressionQualityValues()
      • getCompressionQualityValues

        public float[] getCompressionQualityValues​()
        クラスからコピーされた説明: ImageWriteParam
        圧縮品質レベルの表示または設定のためのユーザー・インタフェースの一部として、getCompressionQualityDescriptionsとともに使用できるfloatの配列を返します。 詳細は、getCompressionQualityDescriptionsを参照してください。

        説明が使用できない場合、nullが返されます。 getCompressionQualityDescriptionsからnullが返される場合、このメソッドはnullも返す必要があります。

        複数の圧縮方式があり、そのどれもが設定されていない場合、IllegalStateExceptionがスローされます。

        デフォルト実装では、圧縮がサポートされるか、圧縮モードがMODE_EXPLICITであるかを調べます。 これに当てはまる場合、getCompressionTypes()nullのとき、あるいはgetCompressionType()nullでないときにnullを返します。

        オーバーライド:
        getCompressionQualityValues、クラス: ImageWriteParam
        戻り値:
        getCompressionQualityDescriptionsからのStringで記述される、圧縮品質レベル間の範囲を示すfloatの配列。
        関連項目:
        ImageWriteParam.getCompressionQualityDescriptions()
      • areTablesSet

        public boolean areTablesSet​()
        現在表が設定されている場合はtrueを返します。
        戻り値:
        表が存在する場合はtrue
      • setEncodeTables

        public void setEncodeTables​(JPEGQTable[] qTables,
                                    JPEGHuffmanTable[] DCHuffmanTables,
                                    JPEGHuffmanTable[] ACHuffmanTables)
        省略されたストリームのエンコードで使用するために数量化表およびハフマン表を設定します。 各タイプの表は最大で4つです。 メタデータで表が指定されると、これらの表は無視されます。 引数はすべてnull以外である必要があります。 ハフマン表の2つの配列の要素数は同じである必要があります。 メタデータのフレームおよびスキャン・ヘッダーの表指示子は、これらの配列のインデックスと同等であると想定されます。 引数配列は、このメソッドによりコピーされます。
        パラメータ:
        qTables - 数量化表オブジェクトの配列。
        DCHuffmanTables - ハフマン表オブジェクトの配列。
        ACHuffmanTables - ハフマン表オブジェクトの配列。
        例外:
        IllegalArgumentException - いずれかの引数がnullであるか、4つより多くの要素を持つ場合、またはDC表とAC表の数が異なる場合。
        関連項目:
        unsetEncodeTables()
      • setOptimizeHuffmanTables

        public void setOptimizeHuffmanTables​(boolean optimize)
        書込み処理の一部として最適化されたイメージ用ハフマン表を生成するようにライターに通知します。 デフォルトはfalseです。 このフラグがtrueに設定されている場合は、メタデータで指定されたすべての表をオーバーライドします。 これは、このフラグをtrueに設定して書き込まれたイメージには常にハフマン表が含まれるということです。
        パラメータ:
        optimize - 書込み時に最適化されたハフマン表を生成するかどうかを示すboolean値。
        関連項目:
        getOptimizeHuffmanTables()
      • getOptimizeHuffmanTables

        public boolean getOptimizeHuffmanTables​()
        setOptimizeHuffmanTablesの直前の呼出しに渡された値を返します。setOptimizeHuffmanTablesが呼び出されなかった場合は、falseを返します。
        戻り値:
        ライターが最適化されたハフマン表を生成する場合はtrue
        関連項目:
        setOptimizeHuffmanTables(boolean)