com.sun.image.codec.jpeg
インタフェース JPEGEncodeParam

すべてのスーパーインタフェース:
Cloneable, JPEGDecodeParam

public interface JPEGEncodeParam
extends Cloneable, JPEGDecodeParam

JPEGEncodeParam は、JPEG データストリームの符号化の制御に必要なテーブルおよびオプションをカプセル化します。パラメータは、符号化用にアプリケーションによって明示的に設定されるか、または別の JPEG ヘッダから読み取られます。

BufferedImage の操作を行う場合、codec は、符号化された JPEG COLOR_ID を BufferedImage 内の ColorModel に一致させようとしますが、常にこれが可能であるとは限りません。デフォルトのマッピングを以下に示します。サポートされていない変換が必要な場合、または不当なイメージカラー領域が使われている場合は、ユーザは、イメージデータを既知の ColorSpace に変換するか、またはラスタからデータを符号化する必要があります。ラスタを符号化する際は、カラー領域の調整は行われないので、符号化された COLOR_ID を得るのに必要な変換をすべて独自に行う必要があります。 符号化されるイメージの COLOR_ID は、Huffman テーブルおよび量子化テーブルやサブサンプル用因数のための JPEG codec の初期値の制御に使われます。また、COLOR_ID は、最良の符号化を得るために、どのカラー変換を実行するかを決定する際にも使われます。

注: ここに記述されているカラー ID は、JPEG codec によるデータ処理に影響を与える、単純に列挙された値です。JPEG 圧縮は、定義上色を区別しません。これらの値は、JPEG データの圧縮解除の際のヒントとして使われます。JPEG codec は、これらの値を使って、より高い圧縮率の取得に役立つ領域にデータを移動することができます。

動作の例を以下に示します。これらのマッピングは将来変更される可能性があるので、JPEGImageEncoder.getDefaultParamBlock の呼び出しを使って、特定の BufferedImage に対する encodedColorID を確認することを強くお勧めします。 極端な場合、ユーザがイメージを目的のカラー領域に変換して、Raster から符号化する必要があります。この場合 API プログラマは、Raster のデータのカラー ID を指定しなければならず、カラー変換は行われません。

符号化:

BufferedImage タイプ/インスタンス        JPEG (符号化された) カラー ID
========================       =======================
TYPE_GRAY                      COLOR_ID_GRAYSCALE
TYPE_RGB                       COLOR_ID_YCbCr
TYPE_YCbCr                     COLOR_ID_YCbCr
TYPE_YCbCr/CS_PYCC             COLOR_ID_PYCC
TYPE_CMYK                      COLOR_ID_CMYK
TYPE_RGB   (alpha)             COLOR_ID_YCbCrA
TYPE_YCbCr (alpha)             COLOR_ID_YCbCrA
TYPE_YCbCr/CS_PYCC (alpha)     COLOR_ID_PYCCA
 Any Other **                COLOR_ID_UNKNOWN
BufferedImage 変換よりも詳細な制御を行う場合は、ユーザは、Raster からデータを符号化しなければなりません。この場合、データに対してカラー変換は行われません。ユーザが目的の変換を実行する必要があります。

APP0_MARKER を含めることによって JFIF イメージを記述する場合は、符号化された COLOR_ID は、COLOR_ID_UNKNOWN、COLOR_ID_GRAYSCALE、COLOR_ID_YCbCr、または COLOR_ID_CMYK のうちのどれかです。ほかのすべてのインスタンスでは、ImageformatException がスローされます。

重要: Alpha RGB BufferedImage は、有効な JFIF ストリームにマップされません。JFIF ファイルが必要な場合は、符号化の前に Alpha を除く必要があります。APP0 が設定されているのに Alpha が除かれていないと、ImageFormatException がスローされます。

com.sun.image.codec.jpeg パッケージ内のクラスは、コア Java API の一部ではありません。これらは、Sun の JDK および JRE の配布の一部です。ほかのライセンス保有者がこれらのクラスを配布する可能性はあります。ただし、開発者は、これらのクラスが Sun 以外の実装で利用できると想定して作業することはできません。将来的には、同等の機能がコア API または標準の拡張機能で利用できるようになる予定です。


インタフェース com.sun.image.codec.jpeg.JPEGDecodeParam から継承したフィールド
APP0_MARKER, APP1_MARKER, APP2_MARKER, APP3_MARKER, APP4_MARKER, APP5_MARKER, APP6_MARKER, APP7_MARKER, APP8_MARKER, APP9_MARKER, APPA_MARKER, APPB_MARKER, APPC_MARKER, APPD_MARKER, APPE_MARKER, APPF_MARKER, COLOR_ID_CMYK, COLOR_ID_GRAY, COLOR_ID_PYCC, COLOR_ID_PYCCA, COLOR_ID_RGB, COLOR_ID_RGBA, COLOR_ID_RGBA_INVERTED, COLOR_ID_UNKNOWN, COLOR_ID_YCbCr, COLOR_ID_YCbCrA, COLOR_ID_YCbCrA_INVERTED, COLOR_ID_YCCK, COMMENT_MARKER, DENSITY_UNIT_ASPECT_RATIO, DENSITY_UNIT_DOTS_CM, DENSITY_UNIT_DOTS_INCH, NUM_COLOR_ID, NUM_DENSITY_UNIT, NUM_TABLES
 
メソッドの概要
 void addMarkerData(int marker, byte[] data)
          マーカに関連付けられた byte[] の配列に data を追加します。
 Object clone()
           
 void setACHuffmanComponentMapping(int component, int table)
          コンポーネントとその AC Huffman テーブルとの間のマッピングを設定します。
 void setACHuffmanTable(int tableNum, JPEGHuffmanTable huffTable)
          AC Huffman コーディングテーブルのインデックスを、指定されたテーブルに設定します。
 void setDCHuffmanComponentMapping(int component, int table)
          コンポーネントとその DC Huffman テーブルとの間のマッピングを設定します。
 void setDCHuffmanTable(int tableNum, JPEGHuffmanTable huffTable)
          DC Huffman コーディングテーブルを、指定されたテーブルへのインデックス値に設定します。
 void setDensityUnit(int unit)
          ピクセルサイズの単位を設定します。
 void setHorizontalSubsampling(int component, int subsample)
          指定されたコンポーネントに対する水平方向のサブサンプル因数を設定します。
 void setImageInfoValid(boolean flag)
          ParamBlock のテーブル情報が有効であることを示すフラグを設定します。
 void setMarkerData(int marker, byte[][] data)
          出力データストリームに書き込まれるマーカデータを設定します。
 void setQTable(int tableNum, JPEGQTable qTable)
          渡されたインデックス値で係数量子化テーブルを設定します。
 void setQTableComponentMapping(int component, int table)
          コンポーネントとその量子化テーブルとの間のマッピングを設定します。
 void setQuality(float quality, boolean forceBaseline)
          現在インストールされている量子化テーブルと置き換わる、新しい量子化テーブルを生成します。
 void setRestartInterval(int restartInterval)
          再起動ごとに MCU を設定するか、再起動マーカがない場合には 0 を設定します。
 void setTableInfoValid(boolean flag)
          ParamBlock のイメージ情報の有効性を示すフラグを設定します。
 void setVerticalSubsampling(int component, int subsample)
          与えられたコンポーネントに対する垂直方向のサブサンプル用因数を設定します。
 void setXDensity(int density)
          水平方向のピクセル密度を設定します。
 void setYDensity(int density)
          垂直方向のピクセル密度を設定します。
 
インタフェース com.sun.image.codec.jpeg.JPEGDecodeParam から継承したメソッド
getACHuffmanComponentMapping, getACHuffmanTable, getACHuffmanTableForComponent, getDCHuffmanComponentMapping, getDCHuffmanTable, getDCHuffmanTableForComponent, getDensityUnit, getEncodedColorID, getHeight, getHorizontalSubsampling, getMarker, getMarkerData, getNumComponents, getQTable, getQTableComponentMapping, getQTableForComponent, getRestartInterval, getVerticalSubsampling, getWidth, getXDensity, getYDensity, isImageInfoValid, isTableInfoValid
 

メソッドの詳細

clone

public Object clone()
定義:
インタフェース JPEGDecodeParam 内の clone
オーバーライド:
クラス Object 内の clone

setHorizontalSubsampling

public void setHorizontalSubsampling(int component,
                                     int subsample)
指定されたコンポーネントに対する水平方向のサブサンプル因数を設定します。サブサンプル因数は、個々の出力ピクセルの生成に必要な入力ピクセル数です (YCC の場合は通常 2)。
パラメータ:
component - 指定されているコンポーネント
subsample - 指定されているサブサンプル用因子

setVerticalSubsampling

public void setVerticalSubsampling(int component,
                                   int subsample)
与えられたコンポーネントに対する垂直方向のサブサンプル用因数を設定します。サブサンプル因数は、個々の出力ピクセルの生成に必要な入力ピクセル数です (YCC の場合は通常 2)。
パラメータ:
component - 指定されているコンポーネント
subsample - 指定されているサブサンプル用因子

setQTable

public void setQTable(int tableNum,
                      JPEGQTable qTable)
渡されたインデックス値で係数量子化テーブルを設定します。tableNum は、0 〜 3 の範囲の値である必要があります。
パラメータ:
qtable - 使用される係数量子化テーブル
tableNum - 設定されるテーブルのインデックス

setDCHuffmanTable

public void setDCHuffmanTable(int tableNum,
                              JPEGHuffmanTable huffTable)
DC Huffman コーディングテーブルを、指定されたテーブルへのインデックス値に設定します。
パラメータ:
huffTable - インデックス tableNum に割り当てられる JPEGHuffmanTable
tableNum - 設定されるテーブルのインデックス
例外:
IllegalArgumentException - tableNum が範囲外の場合にスローされる。インデックスは 0 〜 3 の範囲の値である必要がある

setACHuffmanTable

public void setACHuffmanTable(int tableNum,
                              JPEGHuffmanTable huffTable)
AC Huffman コーディングテーブルのインデックスを、指定されたテーブルに設定します。
パラメータ:
huffTable - インデックス tableNum に割り当てられる JPEGHuffmanTable
tableNum - 設定されるテーブルのインデックス
例外:
IllegalArgumentException - tableNum が範囲外の場合にスローされる。インデックスは 0 〜 3 の範囲の値である必要がある

setDCHuffmanComponentMapping

public void setDCHuffmanComponentMapping(int component,
                                         int table)
コンポーネントとその DC Huffman テーブルとの間のマッピングを設定します。
パラメータ:
component - マッピングを設定するコンポーネント
table - コンポーネントで使用する DC Huffman テーブル

setACHuffmanComponentMapping

public void setACHuffmanComponentMapping(int component,
                                         int table)
コンポーネントとその AC Huffman テーブルとの間のマッピングを設定します。
パラメータ:
component - マッピングを設定するコンポーネント
table - コンポーネントで使用する AC Huffman テーブル

setQTableComponentMapping

public void setQTableComponentMapping(int component,
                                      int table)
コンポーネントとその量子化テーブルとの間のマッピングを設定します。
パラメータ:
component - マッピングを設定するコンポーネント
table - コンポーネントで使用する量子化テーブル

setImageInfoValid

public void setImageInfoValid(boolean flag)
ParamBlock のテーブル情報が有効であることを示すフラグを設定します。符号化の際にテーブルを含めるべきかどうかを示すために使われます。

setTableInfoValid

public void setTableInfoValid(boolean flag)
ParamBlock のイメージ情報の有効性を示すフラグを設定します。符号化の際にイメージデータを記述すべきかどうかを示すために使われます。

setMarkerData

public void setMarkerData(int marker,
                          byte[][] data)
出力データストリームに書き込まれるマーカデータを設定します。これにより、JPEParm オブジェクト内の既存のマーカデータがすべて削除されます。データを null に設定して呼び出しを行うことによって、デフォルトの APP0 マーカの削除に使うことができます。
パラメータ:
marker - データを設定するマーカ
data - 書き込まれる新しいデータセット

addMarkerData

public void addMarkerData(int marker,
                          byte[] data)
マーカに関連付けられた byte[] の配列に data を追加します。これにより、配列内の各 byte[] に対して、マーカのインスタンスの記述が 1 つ追加されます。
パラメータ:
marker - インスタンスを追加するマーカ
data - 記述されるデータ

setRestartInterval

public void setRestartInterval(int restartInterval)
再起動ごとに MCU を設定するか、再起動マーカがない場合には 0 を設定します。
パラメータ:
restartInterval - 再起動マーカごとの MCU 数

setDensityUnit

public void setDensityUnit(int unit)
ピクセルサイズの単位を設定します。APP0 マーカが記述されている場合は、この値は APP0 マーカにコピーされます。この値は、JPEG コードでは使われません。
パラメータ:
units - DENSITY_UNIT_* 値の 1 つ

setXDensity

public void setXDensity(int density)
水平方向のピクセル密度を設定します。この値は APP0 マーカに書き込まれます。この値は、JPEG コードでは使われません。
パラメータ:
desnity - 水平方向のピクセル密度 (JPEGDecodeParam.getDensityUnit() に記述された単位)

setYDensity

public void setYDensity(int density)
垂直方向のピクセル密度を設定します。この値は JFIF APP0 マーカに書き込まれます。この値は、JPEG コードでは使われません。
パラメータ:
density - 垂直方向のピクセルの密度 (JPEGDecodeParam.getDensityUnit() に記述された単位)

setQuality

public void setQuality(float quality,
                       boolean forceBaseline)
現在インストールされている量子化テーブルと置き換わる、新しい量子化テーブルを生成します。また、コンポーネント QTable のマッピングを更新して、現在の符号化された COLOR_ID のデフォルトに合わせます。 生成される量子化テーブルは、品質のパラメータに基づき、最高圧縮で最低品質の 0.0 から最低圧縮で最高品質の 1.0 まであります。

品質レベルが 1.0 のテーブルでは、すべての値が 1 で、量子化によってデータが失われることはありません。ただし、クロミナンスサブサンプリングを使用した場合、および DCT 内の四捨五入エラーにより、いくぶんイメージが劣化します。

標準クロミナンス量子化テーブルのリニアな指標値を、以下に示します。

ガイドライン: 0.75 高品質
                    0.5  標準品質
                    0.25 低品質
 
パラメータ:
quality - 0.0 〜 1.0 の範囲で目的の品質レベルを設定する
forceBaseline - ベースライン量子化テーブルを強制する


バグや機能要求の報告
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1999 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.