JavaTM 2
Platform
Std. Ed. v1.4.0

javax.imageio.plugins.jpeg
クラス 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 メタデータ形式の仕様と使用法に関する注記」を参照してください。


フィールドの概要
 
クラス javax.imageio.ImageWriteParam から継承したフィールド
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, preferredTileSizes, progressiveMode, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, tilingMode, tilingSet
 
クラス javax.imageio.IIOParam から継承したフィールド
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
 
コンストラクタの概要
JPEGImageWriteParam(Locale locale)
          JPEGImageWriteParam を構築します。
 
メソッドの概要
 boolean areTablesSet()
          現在テーブルが設定されている場合は true を返します。
 JPEGHuffmanTable[] getACHuffmanTables()
          setEncodeTables への直前の呼び出しで設定された AC ハフマンテーブルの配列のコピーを返します。
 String[] getCompressionQualityDescriptions()
          圧縮品質レベルの表示または設定のために、ユーザーインタフェースの一部として getCompressionQualityValues と共に使用できる String の配列を返します。
 float[] getCompressionQualityValues()
          圧縮品質レベルの表示または設定のためのユーザーインタフェースの一部として、getCompressionQualityDescriptions と共に使用できる float の配列を返します。
 JPEGHuffmanTable[] getDCHuffmanTables()
          setEncodeTables への直前の呼び出しで設定された DC ハフマンテーブルの配列のコピーを返します。
 boolean getOptimizeHuffmanTables()
          setOptimizeHuffmanTables の直前の呼び出しに渡された値を返します。
 JPEGQTable[] getQTables()
          setEncodeTables への直前の呼び出しで設定された数量化テーブルの配列のコピーを返します。
 boolean isCompressionLossless()
          JPEG プラグインは損失の発生する圧縮だけをサポートするので、false を返します。
 void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
          省略されたストリームの符号化で使用するために数量化テーブルおよびハフマンテーブルを設定します。
 void setOptimizeHuffmanTables(boolean optimize)
          書き込み処理の一部として最適化されたイメージ用ハフマンテーブルを生成するようにライターに通知します。
 void unsetCompression()
          以前のすべての圧縮品質設定を削除します。
 void unsetEncodeTables()
          現在設定されている数量化テーブルおよびハフマンテーブルを削除します。
 
クラス javax.imageio.ImageWriteParam から継承したメソッド
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, getBitRate, getCompressionMode, getCompressionQuality, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, setCompressionMode, setCompressionQuality, setCompressionType, setProgressiveMode, setTiling, setTilingMode, unsetTiling
 
クラス javax.imageio.IIOParam から継承したメソッド
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

JPEGImageWriteParam

public JPEGImageWriteParam(Locale locale)
JPEGImageWriteParam を構築します。タイリングはサポートされません。プログレッシブエンコーディングはサポートされます。デフォルトのプログレッシブモードは MODE_DISABLED です。JPEG と呼ばれる 1 つの圧縮形式がサポートされます。デフォルトの圧縮品質は 0.75 です。

パラメータ:
locale - 圧縮タイプ名と品質説明を地域対応にするためにスーパークラスが使用する Locale、または null
メソッドの詳細

unsetCompression

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

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

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

isCompressionLossless

public boolean isCompressionLossless()
JPEG プラグインは損失の発生する圧縮だけをサポートするので、false を返します。

オーバーライド:
クラス ImageWriteParam 内の isCompressionLossless
戻り値:
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 を返します。

オーバーライド:
クラス ImageWriteParam 内の getCompressionQualityDescriptions
戻り値:
圧縮品質レベルの地域対応にした概要を含む String の配列
関連項目:
ImageWriteParam.getCompressionQualityValues()

getCompressionQualityValues

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

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

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

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

オーバーライド:
クラス ImageWriteParam 内の getCompressionQualityValues
戻り値:
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()

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)

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.