共用方式為


如何使用編碼選項 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

這個主題說明如何設定 BitmapEncoder 的編碼選項。編碼選項可讓您微調編碼器的行為及參數。例如,您可以在 JPEG 編碼器上設定 ImageQuality 選項,以控制影像品質與檔案大小之間的取捨問題。您通常不需要使用編碼選項,因為編碼器會自動選取適當的預設值。

編碼選項只會由 BitmapEncoderCreateAsyncGoToNextFrameAsync 方法公開。這是因為您必須在初始化編碼器或框架時指定編碼選項。

您必須知道的事

技術

先決條件

編碼選項參考

您可以將這裡的編碼選項與 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.
    });

現在,您就有一個可當作一般用途使用的編碼器了。

相關主題

如何編碼新影像