|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface JPEGEncodeParam
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_UNKNOWNBufferedImage 変換よりも詳細な制御を行う場合は、ユーザは、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 または標準の拡張機能で利用できるようになる予定です。
| フィールドの概要 |
|---|
| メソッドの概要 | |
|---|---|
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)
垂直方向のピクセル密度を設定します。 |
| メソッドの詳細 |
|---|
Object clone()
JPEGDecodeParam 内の clone
void setHorizontalSubsampling(int component,
int subsample)
component - コンポーネントを指定するsubsample - サブサンプル用因子を指定する
void setVerticalSubsampling(int component,
int subsample)
component - コンポーネントを指定するsubsample - サブサンプル用因子を指定する
void setQTable(int tableNum,
JPEGQTable qTable)
qtable - 使用される係数量子化テーブルtableNum - 設定するテーブルのインデックス
void setDCHuffmanTable(int tableNum,
JPEGHuffmanTable huffTable)
huffTable - インデックス tableNum に割り当てられる JPEGHuffmanTabletableNum - 設定されるテーブルのインデックス
IllegalArgumentException - tableNum が範囲外の場合にスローされる。インデックスは 0 〜 3 の範囲の値である必要がある
void setACHuffmanTable(int tableNum,
JPEGHuffmanTable huffTable)
huffTable - インデックス tableNum に割り当てられる JPEGHuffmanTabletableNum - 設定されるテーブルのインデックス
IllegalArgumentException - tableNum が範囲外の場合にスローされる。インデックスは 0 〜 3 の範囲の値である必要がある
void setDCHuffmanComponentMapping(int component,
int table)
component - マッピングを設定するコンポーネントtable - コンポーネントで使用する DC Huffman テーブル
void setACHuffmanComponentMapping(int component,
int table)
component - マッピングを設定するコンポーネントtable - コンポーネントで使用する AC Huffman テーブル
void setQTableComponentMapping(int component,
int table)
component - マッピングを設定するコンポーネントtable - コンポーネントで使用する量子化テーブルvoid setImageInfoValid(boolean flag)
void setTableInfoValid(boolean flag)
void setMarkerData(int marker,
byte[][] data)
marker - データを設定するマーカdata - 書き込まれる新しいデータセット
void addMarkerData(int marker,
byte[] data)
marker - インスタンスを追加するマーカdata - 記述されるデータvoid setRestartInterval(int restartInterval)
restartInterval - 再起動マーカごとの MCU 数void setDensityUnit(int unit)
unit - DENSITY_UNIT_* 値の 1 つvoid setXDensity(int density)
density - 水平方向のピクセル密度 (@see JPEGParam.getDensityUnit に記述された単位)void setYDensity(int density)
density - 垂直方向のピクセル密度 (@see JPEGParam.getDensityUnit に記述された単位)
void setQuality(float quality,
boolean forceBaseline)
品質レベルが 1.0 のテーブルでは、すべての値が 1 で、量子化によってデータが失われることはありません。ただし、クロミナンスサブサンプリングを使用した場合、および DCT 内の四捨五入エラーにより、いくぶんイメージが劣化します。
標準クロミナンス量子化テーブルのリニアな指標値を、以下に示します。
ガイドライン:
0.75 高品質
0.5 標準品質
0.25 低品質
quality - 0.0 〜 1.0 の範囲で目的の品質レベルを設定するforceBaseline - ベースライン量子化テーブルを強制する
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||