モジュール java.desktop

クラスJPEGImageWriteParam

java.lang.Object
javax.imageio.IIOParam
javax.imageio.ImageWriteParam
javax.imageio.plugins.jpeg.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
  • メソッドの詳細

    • unsetCompression

      public void unsetCompression()
      以前のすべての圧縮品質設定を削除します。

      デフォルトの実装は、圧縮品質を0.75Fにリセットします。

      オーバーライド:
      unsetCompression、クラス: ImageWriteParam
      例外:
      IllegalStateException - 圧縮モードがMODE_EXPLICITでない場合。
      関連項目:
      ImageWriteParam.setCompressionType(java.lang.String), ImageWriteParam.setCompressionQuality(float)
    • isCompressionLossless

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

      public void unsetEncodeTables()
      現在設定されている数量化表およびハフマン表を削除します。
      関連項目:
      setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
    • getQTables

      public JPEGQTable[] getQTables()
      setEncodeTablesへの直前の呼出しで設定された数量化表の配列のコピーを返します。現在表が設定されていない場合はnullを返します。
      戻り値:
      JPEGQTableオブジェクトの配列、またはnull
      関連項目:
      setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
    • getDCHuffmanTables

      public JPEGHuffmanTable[] getDCHuffmanTables()
      setEncodeTablesへの直前の呼出しで設定されたDCハフマン表の配列のコピーを返します。現在表が設定されていない場合はnullを返します。
      戻り値:
      JPEGHuffmanTableオブジェクトの配列、またはnull
      関連項目:
      setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
    • getACHuffmanTables

      public JPEGHuffmanTable[] getACHuffmanTables()
      setEncodeTablesへの直前の呼出しで設定されたACハフマン表の配列のコピーを返します。現在表が設定されていない場合はnullを返します。
      戻り値:
      JPEGHuffmanTableオブジェクトの配列、またはnull
      関連項目:
      setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
    • setOptimizeHuffmanTables

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

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