共用方式為


JPEG XR 編解碼器概觀

原生 JPEG XR 編解碼器可透過 Windows 映像處理元件 (WIC) 取得。 編解碼器支援的 JPEG XR 格式是專為消費者和專業數位攝影所設計。

JPEG XR 格式最多可以達到原始 JPEG 格式的壓縮效率兩倍,且壓縮成品較不明顯。 JPEG XR 的功能包括:

  • 支援單色、RGB、CMYK 和 n 通道影像
  • 8、16 和 32 位整數格式
  • 使用固定點或浮點色彩值的高動態範圍、寬色板格式
  • 漸進式解碼
  • 使用相同壓縮演算法的遺失或無遺失編碼
  • 支援解碼大型影像中感興趣的區域

JPEG XR 格式定義于下列標準檔中:

  • 層級-T.832: 資訊技術 – JPEG XR 影像編碼系統 – 影像編碼規格
  • ISO/IEC 29199-2:2010: 資訊技術 — JPEG XR 影像編碼系統 — 第 2 部分:影像編碼規格

JPEG XR 標準主要是以 HD 相片 格式為基礎,但兩種格式之間有一些差異。 在 Windows 8 中,HD 相片編解碼器已更新為支援 JPEG XR。 編碼器現在一律會輸出符合 JPEG XR 規範的位資料流程。 解碼器可以解碼 JPEG XR 和 HD 相片影像。

已對 JPEG XR 編解碼器進行與 HD 相片編解碼器相關的大幅效能改善。 例如,已改善子解析度影像解碼,例如縮圖產生,以及低解析度影像解碼。 建議您使用 JPEG XR 格式,而不是 HD 相片格式。

編解碼器資訊

元件 Description
副檔名 「jxr」 和 「wdp」
容器 GUID GUID_ContainerFormatWmp
解碼器 GUID CLSID_WICWmpDecoder
編碼器 GUID CLSID_WICWmpEncoder
設定檔支援 編碼器和解碼器最多可支援主要設定檔和層級 128。

 

編解碼器功能

高動態範圍

JPEG XR 支援使用浮點或固定點色彩的高動態範圍影像。 在這些色彩格式中,圖元的數值範圍大於可見範圍,因此您可以在中繼處理階段期間調整可見範圍上方或下方的色彩。

  • 固定點:在固定點表示中,0 代表黑色,1.0 代表最大飽和度。 JPEG XR 編解碼器同時支援 16 位和 32 位固定點格式。 針對 16 位,1.0 = 0x2000h,為可見範圍 [0...1] 提供 13 位。 總範圍是 –4.0 到 +3.999,並以線性方式對應。 若為 32 位,1.0 = 0x01000000h,可見範圍為 24 位,而總範圍為 –128 到 +127.999。
  • 浮點數:在浮點標記法中,0 代表黑色,1.0 代表最大飽和度。 JPEG XR 編解碼器同時支援 16 位和 32 位浮點格式。

並排顯示

框架可以分割成稱為 磚的矩形子。 磚是影像的區域,其中包含宏區塊的矩形陣列。 圖格可讓影像的區域解碼,而不需處理整個影像。

在編碼期間,藉由設定 HorizontalTileSlicesVerticalTileSlices 屬性來選取圖格數目。 磚大小下限為 16 × 16 圖元。 編碼器會調整磚數目,以維持這項限制。 每個磚都有相關聯的儲存和處理額外負荷,因此您應該考慮特定案例所需的磚數目。

影像資料流程輸出

JPEG-XR 標準會定義 JPEG-XR 檔案的兩個部分:

  • 定義于標準主體中的影像位資料流程。
  • 映射容器。 檔案包含 Exif 和 XMP 中繼資料,且定義于標準附錄 A 中。

標準可以且允許將影像資料流程內嵌在另一種類型的檔案容器內。 編碼器支援僅限資料流程模式,其會輸出沒有映射容器的原始映射位資料流程。 應用程式可以儲存其他容器格式的位資料流程。

若要啟用僅限資料流程模式,請設定 StreamOnly 屬性。

影像品質設定

數個編解碼器屬性可控制編碼器輸出影像的品質。

  • ImageQuality 是 WIC 編解碼器通用的屬性。 它會將影像品質指定為 0.0–1.0 的單一浮點值,
  • 品質重迭子取樣屬性可讓您更充分地控制品質設定。

若要使用 QualityOverlapSubsampling 屬性,請將 UseCodecOptions 屬性設定為 VARIANT_TRUE

如果 UseCodecOptionsVARIANT_FALSE (VARIANT_FALSE 為預設) 編碼器會使用 ImageQuality 屬性。 編碼器會將 ImageQuality 的值對應至 [品質]、[ 重迭] 和 [ 子取樣 ] 透過查閱表格。

編碼器不支援 CompressionQuality 屬性。

壓縮網域轉碼

JPEG XR 編解碼器可以執行某些影像轉換,而不需要實際解碼壓縮的資料並重新編碼。 壓縮網域作業非常有效率,並避免在解碼和重新編碼遺失壓縮影像時,通常會遺失任何其他品質遺失。

支援下列壓縮網域作業:

  • 裁剪影像的區域。
  • 旋轉或翻轉影像。
  • 捨棄頻率資料以建立較小的影像檔。
  • 在空間和頻率順序之間重新組織影像。

當來源影像是 JPEG XR 影像時,JPEG XR 編碼器會盡可能使用壓縮網域轉碼。 當編碼器執行壓縮網域作業時,它會忽略下列編解碼器屬性: AlphaQualityImageQualityInterleavedAlphaLosslessOverlapQuality。 如果 HorizontalTileSlicesVerticalTileSlices 屬性存在,您必須將它們設定為零。 您無法在壓縮網域轉碼過程中變更影像的磚大小。

下列清單說明如何執行影像轉換。

  • 若要裁剪影像,請在WriteSource方法的WICRect參數中設定所需的區域。
  • 若要旋轉或翻轉影像,請設定 BitmapTransform 屬性。
  • 若要捨棄影像中的頻率資料,請設定 ImageDataDiscard 屬性。 若要捨棄 Alpha 通道中的頻率資料,請設定 AlphaDataDiscard 屬性。 捨棄頻率資料會減少編碼的檔案大小,並可減少解析度。
  • 若要在頻率和空間順序之間變更影像組織,請設定 FrequencyOrdering 屬性。

若要停用壓縮網域轉碼並強制編碼器重新編碼影像,請將 UseCodecOptions 設定為 VARIANT_TRUE ,並將 CompressedDomainTranscode 設定為 VARIANT_FALSE

編碼器選項

若要設定編碼屬性,請使用 IPropertyBag2 介面。 如需詳細資訊,請參閱 編碼概觀

下列清單會指定編碼器選項。

AlphaDataDiscard

設定壓縮網域轉碼期間要捨棄的 Alpha 頻率資料量。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 0–4

 

只有在 CompressedDomainTranscode 屬性設定為 VARIANT_TRUE ,而且影像包含平面 Alpha 色板或交錯的 Alpha 色板時,才適用此屬性;否則會忽略它。

對於包含平面 Alpha 色板的影像,下列值是有效的。

描述
0 不捨棄影像頻率資料。
1 會捨棄 flexbit。 這可任意減少轉碼影像的平面 Alpha 色板品質。 ,沒有有效解決方式的變更。 檔案大小和品質的確切縮減取決於許多因素,而且無法完全指定。
2 會捨棄高傳遞頻率資料頻,包括 flexbits。 這可有效地減少兩個維度中 4 倍的平面 Alpha 色板解析度。 轉碼影像的實際維度保持不變,但影像會遺失每 4x4 英色板圖元區塊中的所有詳細資料。 一般而言,只有在 ImageDataDiscard 屬性具有相同的值時,才應該設定此值。
3 會捨棄高傳遞和低傳遞頻率資料頻,包括彈性位。 這可大幅減少兩個維度中 16 個平面 Alpha 色板的解析度。 轉碼影像的實際維度保持不變,但影像會遺失 Alpha 通道圖元的每個 16x16 宏區塊中的所有詳細資料。 一般而言,只有在 ImageDataDiscard 屬性具有相同的值時,才應該設定此值。
4 完全捨棄 Alpha 色頻 (Alpha Channel)。 轉碼影像的像素格式會變更,以反映移除 Alpha 色板。

 

對於包含交錯 Alpha 色板的影像,下列值有效。

描述
4 完全捨棄 Alpha 色頻 (Alpha Channel)。 轉碼影像的像素格式會變更,以反映移除 Alpha 色板。

 

若為交錯 Alpha,除非此屬性設定為 4,否則 Alpha 通道會根據 ImageDataDiscard 屬性的值處理與影像資料相同。

AlphaQuality

設定平面 Alpha 色板影像的壓縮品質。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 1–255 1

 

當影像具有 Alpha 色板且 InterleavedAlpha 屬性VARIANT_FALSE時,就會套 這個屬性。 值 1 表示無遺失模式。 增加值會導致較高的壓縮比例和較低的影像品質。

BitmapTransform

指定解碼時影像是否旋轉或翻轉。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 WICBitmapTransformOptions WICBitmapTransformRotate0

 

CompressedDomainTranscode

啟用或停用壓縮網域轉碼。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_TRUE

 

若要停用壓縮網域作業,請將此屬性設定為 VARIANT_FALSE

FrequencyOrder

以頻率順序啟用編碼。 JPEG XR 編碼器的裝置實作可以組織檔案的空間,以減少編碼期間所需的記憶體。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_TRUE

 

  • VARIANT_TRUE:頻率順序。 最低頻率資料會先出現在檔案中,影像內容會依頻率分組,而不是其空間方向。 依頻率順序組織檔案可提供任何以頻率為基礎的解碼的最佳效能。
  • VARIANT_FALSE:空間順序。 空間順序可減少編碼期間所需的記憶體

除非您有使用空間順序的效能或應用程式特定原因,否則建議使用頻率順序。

HorizontalTileSlices

設定水準磚的數目。

資料類型 VARTYPE 範圍 預設
USHORT VT_UI2 0–4095 (影像寬度 – 1) >> 8

 

此值是水準細分的數目;也就是說,水準磚的數目 – 1。

IgnoreOverlap

指定編碼器如何處理壓縮網域轉碼期間的磚界限。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

只有在 CompressedDomainTranscode 屬性設定為 VARIANT_TRUE ,而且執行一或多個磚的子領域轉碼時,才會套用這個屬性。

區域轉碼的預設作業是展開要求的區域,以包含區域邊緣重迭譯所需的周圍圖元。 如果此屬性設定為 VARIANT_TRUE,編解碼器會忽略周圍圖元,而且只會擷取選取的磚或磚。 如果來源影像未並排,或要求的區域包含部分磚,則會忽略此參數。

ImageDataDiscard

設定壓縮網域轉碼期間要捨棄的影像頻率資料量。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 0–3 0

 

只有在 CompressedDomainTranscode 屬性設定為 VARIANT_TRUE時,才適用此屬性;否則會忽略它。

描述
0 不捨棄影像頻率資料。
1 會捨棄 flexbit。 這會任意減少轉碼影像的品質,而不會變更影像的有效解析度。 檔案大小和品質的確切縮減取決於許多因素,而且無法完全指定。 這個值會傳回針對交錯 Alpha 色板指定的錯誤。
2 會捨棄高傳遞頻率資料頻,包括 flexbits。 這可減少兩個維度中 4 的轉碼影像解析度。 轉碼影像的實際維度保持不變,但影像會遺失每個 4x4 圖元區塊中的所有詳細資料。 因此,每當解碼時,應該據以向下取樣轉碼的影像。
3 會捨棄高傳遞和低傳遞頻率資料頻,包括彈性位。 這可減少兩個維度中 16 個轉碼影像的解析度。 轉碼影像的實際維度維持不變,但影像會遺失每個 16x16 宏區塊圖元中的所有詳細資料。 因此,每當解碼時,應該據以向下取樣轉碼的影像。

 

如果影像包含交錯的 Alpha 色板, 則 ImageDataDiscard 的值會套用至 Alpha 通道,除非 AlphaDataDiscard 屬性設定為 4,在此情況下會捨棄 Alpha 色板。

對於平面 Alpha,捨棄的頻率資料是由 AlphaDataDiscard 屬性所控制。

ImageQuality

設定影像品質。

資料類型 VARTYPE 範圍 預設
FLOAT VT_R4 0–1.0 0.9

 

層級 1.0 提供數學上不遺失的壓縮。

層級 0.0 是最低品質設定。

InterleavedAlpha

指定是否要編碼交錯的 Alpha 或平面 Alpha。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

  • VARIANT_TRUE:交錯 Alpha。 Alpha 通道資訊會編碼為額外的交錯通道,且不會與影像內容通道相互關聯。 當影像串流時,此模式適用于與影像同時解碼 Alpha。
  • VARIANT_FALSE:平面 Alpha。 平面 Alpha 色板會編碼為個別影像。 影像資料和 Alpha 色板會獨立解碼。 您可以選擇性地設定 AlphaQuality 屬性來設定 Alpha 色板的品質等級。

只有特定 RGB 像素格式才支援交錯 Alpha。 任何定義 Alpha 色板的影像格式都支援平面 Alpha。

Lossless

啟用損失壓縮。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

如果值 VARIANT_TRUE,編碼器會使用無損失壓縮。 當設定為 VARIANT_TRUE時,這個屬性會覆寫 ImageQuality 屬性。

重疊

設定重迭篩選的層級。 透過重迭篩選,轉換係數會套用到區塊和宏區塊界限。 這可減少封鎖成品。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 0–4 1

 

描述
0 無重迭。
1 一層重迭,軟並排。 (預設值。)
2 兩層重迭,柔並排。
3 一層重迭,硬式並排
4 兩層重迭,硬式並排。

 

定義:

  • 重迭的一個層級:4x4 區塊的編碼值會根據鄰近區塊進行修改。
  • 重迭的兩個層級:套用第一層重迭。 此外,16x16 宏區塊的編碼值會根據鄰近的宏區塊修改。
  • 軟磚:重迭篩選會套用到磚界限。
  • 硬式並排:不會跨磚界限套用重迭篩選。 硬式磚可以沿著磚界限導入一些視覺成品。

如果您設定此屬性,也請將 UseCodecOptions 設定為 VARIANT_TRUE

ProgressiveMode

啟用或停用漸進式編碼。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

Description
VARIANT_TRUE 循序模式 (預設) 。
VARIANT_FALSE 漸進模式。

 

品質

設定壓縮品質。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 1–255 1

 

值 1 表示無遺失模式。 增加值會導致較高的壓縮比例和較低的影像品質。

如果您設定此屬性,也請將 UseCodecOptions 設定為 VARIANT_TRUE

StreamOnly

啟用或停用僅限資料流程模式。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

Description
VARIANT_TRUE 編碼器會輸出未經中繼資料的原始影像資料流程。
VARIANT_FALSE 編碼器會輸出容器格式, (映射資料流程加上中繼資料) 。

 

子取樣

設定 chroma 子取樣。 此屬性僅適用于 RGB 影像。

資料類型 VARTYPE 範圍 預設
UCHAR VT_UI1 0–3 如果ImageQuality> 0.8,則為 3;否則為 1

 

Description
3 4:4:4 編碼。 保留完整的色度解析度。
2 4:2:2 編碼。 色度解析度為 1/2 的亮度解析度。
1 4:2:0 編碼。 色度解析度為 1/4 的亮度解析度。
0 4:0:0 編碼。 捨棄所有色度值,並只保留亮度。 注意: 不建議使用此模式,因為編解碼器會使用稍微修改的亮度定義來改善效能。 相反地,最好在編碼之前將影像轉換成單色。

 

4:2:2 和 4:2:0 會以色彩詳細資料來保留亮度詳細資料。

如果您設定此屬性,請將 UseCodecOptions 設定為 VARIANT_TRUE

UseCodecOptions

指定是否要使用 QualityOverlapSubsampling 屬性,而不是一般 ImageQuality 屬性。

資料類型 VARTYPE 預設
VARIANT_BOOL VT_BOOL VARIANT_FALSE

 

VerticalTileSlices

設定水準磚的數目。

資料類型 VARTYPE 範圍 預設
USHORT VT_UI2 0–4095 (影像高度 – 1) >> 8

 

此值是垂直細分的數目;也就是說,垂直磚的數目 – 1。

支援的色彩格式

如需這些格式的詳細資訊,請參閱 原生像素格式

  • 整數 RGB 格式
    • GUID_WICPixelFormat24bppRGB
    • GUID_WICPixelFormat24bppBGR
    • GUID_WICPixelFormat32bppBGR
    • GUID_WICPixelFormat48bppRGB
    • GUID_WICPixelFormat32bppBGRA
    • GUID_WICPixelFormat64bppRGBA
    • GUID_WICPixelFormat32bppPBGRA
    • GUID_WICPixelFormat64bppPRGBA
  • 固定點 RGB 格式
    • GUID_WICPixelFormat48bppRGBFixedPoint
    • GUID_WICPixelFormat64bppRGBFixedPoint
    • GUID_WICPixelFormat96bppRGBFixedPoint
    • GUID_WICPixelFormat128bppRGBFixedPoint
    • GUID_WICPixelFormat128bppRGBAFixedPoint
  • 浮點 RGB 格式
    • GUID_WICPixelFormat48bppRGBHalf
    • GUID_WICPixelFormat64bppRGBHalf
    • GUID_WICPixelFormat128bppRGBFloat
    • GUID_WICPixelFormat64bppRGBAFixedPoint
    • GUID_WICPixelFormat64bppRGBAHalf
    • GUID_WICPixelFormat128bppRGBAFloat
    • GUID_WICPixelFormat128bppPRGBAFloat
  • 灰階格式
    • GUID_WICPixelFormat8bppGray
    • GUID_WICPixelFormat16bppGray
    • GUID_WICPixelFormat16bppGrayFixedPoint
    • GUID_WICPixelFormat16bppGrayHalf
    • GUID_WICPixelFormat32bppGrayFixedPoint
    • GUID_WICPixelFormat32bppGrayFloat
  • 已封裝的格式
    • GUID_WICPixelFormat16bppBGR555
    • GUID_WICPixelFormat16bppBGR565
    • GUID_WICPixelFormat32bppBGR101010
    • GUID_WICPixelFormat32bppRGBE
  • CMYK 格式
    • GUID_WICPixelFormat40bppCMYKAlpha
    • GUID_WICPixelFormat64bppCMYK
    • GUID_WICPixelFormat80bppCMYKAlpha
  • N 通道格式
    • GUID_WICPixelFormat32bpp4Channels
    • GUID_WICPixelFormat40bpp5Channels
    • GUID_WICPixelFormat48bpp6Channels
    • GUID_WICPixelFormat56bpp7Channels
    • GUID_WICPixelFormat64bpp8Channels
    • GUID_WICPixelFormat32bpp3ChannelsAlpha
    • GUID_WICPixelFormat40bpp4ChannelsAlpha
    • GUID_WICPixelFormat48bpp5ChannelsAlpha
    • GUID_WICPixelFormat56bpp6ChannelsAlpha
    • GUID_WICPixelFormat64bpp7ChannelsAlpha
    • GUID_WICPixelFormat72bpp8ChannelsAlpha
    • GUID_WICPixelFormat48bpp3Channels
    • GUID_WICPixelFormat64bpp4Channels
    • GUID_WICPixelFormat80bpp5Channels
    • GUID_WICPixelFormat96bpp6Channels
    • GUID_WICPixelFormat128bpp8Channels
    • GUID_WICPixelFormat64bpp3ChannelsAlpha
    • GUID_WICPixelFormat80bpp4ChannelsAlpha
    • GUID_WICPixelFormat96bpp5ChannelsAlpha
    • GUID_WICPixelFormat112bpp6ChannelsAlpha
    • GUID_WICPixelFormat128bpp7ChannelsAlpha
    • GUID_WICPixelFormat144bpp8ChannelsAlpha