エンコード オプションの使用方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
このトピックでは、BitmapEncoder に対してエンコーディング オプションを設定する方法について説明します。エンコーダーの動作やパラメーターは、エンコード オプションを使って微調整できます。たとえば、画質とファイル サイズのバランスは、JPEG エンコーダーの ImageQuality オプションを設定して制御できます。通常は、適切な既定値をエンコーダーが自動的に選択するため、エンコーディング オプションを自分で設定する必要はありません。
エンコーディング オプションは、BitmapEncoder の CreateAsync メソッドと GoToNextFrameAsync メソッドでしか公開されていません。エンコーディング オプションは、エンコーダーまたはフレームの初期化時に指定する必要があるためです。
理解しておく必要があること
テクノロジ
必要条件
- JavaScript を使って基本的な Windows ランタイム アプリを作ることができる必要があります。詳しくは、「JavaScript を使った初めての Windows ランタイム アプリの作成」をご覧ください。
- BitmapEncoder を使った画像のエンコード方法を理解している必要があります。詳しくは、「新しい画像をエンコードする方法」をご覧ください。
エンコーディング オプション リファレンス
BitmapEncoder では、以下に示したエンコーディング オプションを使うことができます。エンコーディング オプションは、対応する名前の文字列と特定のデータ型 (Windows.Foundation.PropertyType) の値によって定義されます。
名前 | PropertyType | 使用上の注意 | 有効な形式 |
---|---|---|---|
ImageQuality | single | 有効な値は 0 ~ 1.0 です。値が大きいほど、画質が高くなります。 | JPEG、JPEG-XR |
CompressionQuality | single | 有効な値は 0 ~ 1.0 です。値が大きいほど、効率の高い (時間のかかる) 圧縮方式であることを示します。 | TIFF |
Lossless | boolean | true に設定すると、ImageQuality オプションが無視されます。 | JPEG-XR |
InterlaceOption | boolean | 画像をインターレースするかどうかを示します。 | PNG |
FilterOption | uint8 | PngFilterMode 列挙値を使います。 | PNG |
TiffCompressionMethod | uint8 | TiffCompressionMode 列挙値を使います。 | TIFF |
Luminance | uint32Array | 輝度の量子化定数を格納する 64 要素の配列です。 | JPEG |
Chrominance | uint32Array | クロミナンスの量子化定数を格納する 64 要素の配列です。 | JPEG |
JpegYCrCbSubsampling | uint8 | JpegSubsamplingMode 列挙値を使います。 | JPEG |
SuppressApp0 | boolean | App0 メタデータ ブロックの作成を抑制するかどうかを示します。 | JPEG |
EnableV5Header32bppBGRA | boolean | アルファをサポートするバージョン 5 BMP にエンコードするかどうかを示します。 | BMP |
手順
ステップ 1: 出力ストリームの取得
エンコーディングの出力先ファイルから開いた IRandomAccessStream を受け取る関数の先頭部分を記述します。ReadWrite 特権で開いたストリームを使う必要があります。
function (stream) {
注 この例では、JPEG 画像へのエンコーディングを想定しています。エンコーディング オプションは、画像形式ごとに異なります。
出力ストリームの取得方法については、「新しい画像をエンコードする方法」をご覧ください。
ステップ 2: エンコーディング オプションのコレクションの作成
エンコーディング オプション (複数可) は、BitmapPropertySet オブジェクトを使って格納します。各エンコーディング オプションは、キーと値のペアになっています。キーは、エンコーディング オプションの名前を表す文字列です (ImageQuality など)。値は、実際のエンコーディング オプション値を明示的なデータ型 (Windows.Foundation.PropertyType) に関連付けることのできる BitmapTypedValue オブジェクトです。
この例では、最高の画質を得るように JPEG エンコーダーを設定しています。この画質を設定するため、ImageQuality キーを使ってエンコーディング オプションを作成し、その値を単精度の数値 1.0 (有効範囲の上限値) に設定しています。
var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
var qualityValue = new Windows.Graphics.Imaging.BitmapTypedValue(
1.0, // Maximum quality
Windows.Foundation.PropertyType.single
);
propertySet.insert("ImageQuality", qualityValue);
ステップ 3: エンコーディング オプションでエンコーダーを初期化する
CreateAsync メソッドの最後のパラメーターにエンコーディング オプションを指定します。
Windows.Graphics.Imaging.BitmapEncoder.createAsync(
Windows.Graphics.Imaging.BitmapEncoder.jpegEncoderId,
stream,
propertySet
).then(function (encoder) {
// Encoder is initialized with encoding options.
});
これでエンコーダーは完成です。後は普通に使うことができます。