共用方式為


解碼概觀

本主題介紹點陣圖解碼器,這是用來從資料流程解碼影像檔的核心 Windows 映像處理元件 (WIC) 編解碼器元件。

本主題包含下列各節。

簡介

點陣圖解碼器可以視為數位影像的外部容器,並提供全域屬性和影像框架的存取權。 某些影像格式支援全域縮圖、預覽、色彩內容或中繼資料,而其他則只提供這些屬性在畫面層級。 不過,請注意,許多標準影像格式都不支援這些全域屬性。 因此,WIC 所提供的許多原生編解碼器實作都不支援大部分的全域屬性。 如需全域屬性支援的相關資訊,請參閱本主題的原生點陣圖解碼器一節中的表格。

在 WIC 中,點陣圖解碼器是由 IWICBitmapDecoder 介面表示,並提供點陣圖的這些全域屬性的存取權,更重要的是它所包含的框架。 IWICBitmapFrameDecode介面代表個別的點陣圖框架,並在點陣圖來源概觀中詳細討論。

原生點陣圖解碼器

WIC 針對標準 Web 影像格式和高動態範圍 HD 相片格式,提供 IWICBitmapDecoder 介面的數個原生實作。 下表列出可用的原生解碼器、類別識別碼名稱,以及全域屬性的支援。 雖然功能可能不支援全域層級的縮圖之類的屬性,但影像格式可能會在個別框架層級支援這類屬性。

映像格式 CLSID 名稱 縮圖 預覽 色彩內容 中繼資料
BMP CLSID_WICBmpDecoder No No No No
GIF CLSID_WICGifDecoder No No No Yes
ICO CLSID_WICIcoDecoder No No No No
JPEG CLSID_WICJpegDecoder No No No No
PNG CLSID_WICPngDecoder No No No No
TIFF CLSID_WICTiffDecoder No No No No
HD 相片 CLSID_WICWmpDecoder No No No

 

建立點陣圖解碼器

若要使用 WIC 解碼影像,您必須先為目標影像格式建立 IWICBitmapDecoder 的 實例。 解碼器實例可讓您存取全域屬性和中繼資料,如果支援的話,以及影像畫面格。 WIC 映射處理站 IWICImagingFactory提供數種方法來建立點陣圖解碼器。 提供下列處理站方法來建立點陣圖解碼器。

下列程式碼示範如何使用影像檔名建立點陣圖解碼器,並擷取影像的第一個框架。

   // Create a decoder
   IWICBitmapDecoder *pDecoder = NULL;

   hr = m_pIWICFactory->CreateDecoderFromFilename(
       szFileName,                      // Image to be decoded
       NULL,                            // Do not prefer a particular vendor
       GENERIC_READ,                    // Desired read access to the file
       WICDecodeMetadataCacheOnDemand,  // Cache metadata when needed
       &pDecoder                        // Pointer to the decoder
       );

   // Retrieve the first frame of the image from the decoder
   IWICBitmapFrameDecode *pFrame = NULL;

   if (SUCCEEDED(hr))
   {
       hr = pDecoder->GetFrame(0, &pFrame);
   }

解碼器擴充性

WIC 的核心功能之一是擴充性架構,可讓編解碼器開發人員開發自己的影像編解碼器,並取得與映射編解碼器原生實作相同的平臺支援。 不論影像格式為何,所有影像處理都會使用單一且一致的介面集。 只要安裝編解碼器,任何使用 WIC 的應用程式都會自動支援新的映射格式。 如需編解碼器開發的詳細資訊,請參閱 元件開發中的主題。 如需解碼器開發的詳細資訊,請參閱 實作WIC-Enabled解碼器

概念

Windows 映像元件概觀

編碼概觀

元件開發