如何使用編碼選項 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
這個主題說明如何設定 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 | 布林值 | 如果設為 true,就會略過 ImageQuality 選項。 | JPEG-XR |
InterlaceOption | 布林值 | 是否交錯影像。 | PNG |
FilterOption | uint8 | 使用 PngFilterMode 列舉。 | PNG |
TiffCompressionMethod | uint8 | 使用 TiffCompressionMode 列舉。 | TIFF |
Luminance | uint32Array | 含有照度量化常數的 64 個元素的陣列。 | JPEG |
Chrominance | uint32Array | 含有色度量化常數的 64 個元素的陣列。 | JPEG |
JpegYCrCbSubsampling | uint8 | 使用 JpegSubsamplingMode 列舉。 | JPEG |
SuppressApp0 | 布林值 | 是否抑制建立 App0 中繼資料區塊。 | JPEG |
EnableV5Header32bppBGRA | 布林值 | 是否編碼為支援 Alpha 的版本 5 BMP。 | BMP |
指示
步驟 1: 取得輸出資料流
編寫函式,一開始要接收從您編碼之檔案所開啟的 IRandomAccessStream。您必須使用透過 ReadWrite 權限所開啟的資料流。
function (stream) {
注意 這個範例假設您編碼的是 JPEG 影像。編碼選項與影像格式相關。
若要了解如何取得輸出資料流,請參閱如何編碼新影像。
步驟 2: 建立編碼選項集合
您可使用 BitmapPropertySet 物件儲存一或多個編碼選項。每個編碼選項都是一個機碼值組。機碼是一個設為編碼選項名稱的字串,例如 ImageQuality。值是一個 BitmapTypedValue 物件,可讓您將實際編碼選項值與明確資料類型 (Windows.Foundation.PropertyType) 產生關聯。
這個範例說明如何設定 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.
});
現在,您就有一個可當作一般用途使用的編碼器了。