解碼概觀
本主題介紹點陣圖解碼器,這是用來從資料流程解碼影像檔的核心 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解碼器。
相關主題