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 は、最良の符号化を得るために、どのカラー変換を実行するかを決定する際にも使われます瘁?/font>

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

動作の例を以下に示します。これらのマッピングは将来変更される可能性があるため、@see 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
 その他 **                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

Object clone()
定義:
インタフェース JPEGDecodeParam 内の clone

setHorizontalSubsampling

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

パラメータ:
component - コンポーネントを指定する
subsample - サブサンプル用因子を指定する

setVerticalSubsampling

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

パラメータ:
component - コンポーネントを指定する
subsample - サブサンプル用因子を指定する

setQTable

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

パラメータ:
qtable - 使用される係数量子化テーブル
tableNum - 設定するテーブルのインデックス

setDCHuffmanTable

void setDCHuffmanTable(int tableNum,
                       JPEGHuffmanTable huffTable)
DC Huffman コーディングテーブルを、指定されたテーブルへのインデックス値に設定します。

パラメータ:
huffTable - インデックス tableNum に割り当てられる JPEGHuffmanTable
tableNum - 設定されるテーブルのインデックス
例外:
IllegalArgumentException - tableNum が範囲外の場合にスローされる。インデックスは 0 〜 3 の範囲の値である必要がある

setACHuffmanTable

void setACHuffmanTable(int tableNum,
                       JPEGHuffmanTable huffTable)
AC Huffman コーディングテーブルのインデックスを、指定されたテーブルに設定します。

パラメータ:
huffTable - インデックス tableNum に割り当てられる JPEGHuffmanTable
tableNum - 設定されるテーブルのインデックス
例外:
IllegalArgumentException - tableNum が範囲外の場合にスローされる。インデックスは 0 〜 3 の範囲の値である必要がある

setDCHuffmanComponentMapping

void setDCHuffmanComponentMapping(int component,
                                  int table)
コンポーネントとその DC Huffman テーブルとの間のマッピングを設定します。

パラメータ:
component - マッピングを設定するコンポーネント
table - コンポーネントで使用する DC Huffman テーブル

setACHuffmanComponentMapping

void setACHuffmanComponentMapping(int component,
                                  int table)
コンポーネントとその AC Huffman テーブルとの間のマッピングを設定します。

パラメータ:
component - マッピングを設定するコンポーネント
table - コンポーネントで使用する AC Huffman テーブル

setQTableComponentMapping

void setQTableComponentMapping(int component,
                               int table)
コンポーネントとその量子化テーブルとの間のマッピングを設定します。

パラメータ:
component - マッピングを設定するコンポーネント
table - コンポーネントで使用する量子化テーブル

setImageInfoValid

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


setTableInfoValid

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


setMarkerData

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

パラメータ:
marker - データを設定するマーカ
data - 書き込まれる新しいデータセット

addMarkerData

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

パラメータ:
marker - インスタンスを追加するマーカ
data - 記述されるデータ

setRestartInterval

void setRestartInterval(int restartInterval)
再起動ごとに MCU を設定するか、再起動マーカがない場合には 0 を設定します。

パラメータ:
restartInterval - 再起動マーカごとの MCU 数

setDensityUnit

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

パラメータ:
unit - DENSITY_UNIT_* 値の 1 つ

setXDensity

void setXDensity(int density)
水平方向のピクセル密度を設定します。この値は APP0 マーカに書き込まれます。この値は、JPEG コードでは使われません。

パラメータ:
density - 水平方向のピクセル密度 (@see JPEGParam.getDensityUnit に記述された単位)

setYDensity

void setYDensity(int density)
垂直方向のピクセル密度を設定します。この値は JFIF APP0 マーカに書き込まれます。この値は、JPEG コードでは使われません。

パラメータ:
density - 垂直方向のピクセル密度 (@see JPEGParam.getDensityUnit に記述された単位)

setQuality

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-2004 Sun Microsystems, Inc. 4150 Network Circle
Santa Clara, California, 95054, U.S.A. All Rights Reserved.