實作 IWICBitmapFrameDecode

IWICBitmapFrameDecode

IWICBitmapFrameDecode 是畫面層級介面,可提供實際影像位的存取權。 您可以在框架層級解碼類別上實作這個介面。 因為它是衍生自 IWICBitmapSource所以 IWICBitmapFrameDecode 的實作將會包含 IWICBitmapSource 方法的實作。 IWICBitmapFrameDecode上的其他方法可讓您存取畫面層級縮圖、影像的任何色彩內容,以及框架的中繼資料查詢讀取器。

interface IWICBitmapFrameDecode : IWICBitmapSource
{
// Required methods
HRESULT GetThumbnail ( IWICBitmapSource **ppIThumbnail );
HRESULT GetColorContexts ( UINT cCount, 
IWICColorContext **ppIColorContexts, UINT *pcActualCount );
HRESULT GetMetadataQueryReader ( IWICMetadataQueryReader **ppIMetadataQueryReader );

// Methods inherited from IWICBitmapSource
HRESULT GetSize ( UINT *puiWidth, UINT *puiHeight );
HRESULT GetPixelFormat ( WICPixelFormatGUID *pPixelFormat );
HRESULT GetResolution ( double *pDpiX, double *pDpiY );
HRESULT CopyPixels ( const WICRect *prc, 
   UINT cbStride,
   UINT cbBufferSize, 
   BYTE *pbBuffer );
// Optional method
HRESULT CopyPalette ( IWICPalette *pIPalette );
}

GetThumbnail

GetThumbnail 會傳回目前框架的縮圖。 基於效能考慮,縮圖最常以 JPEG 格式編碼。 就像解碼器上的預覽一樣,您不需要或建議為縮圖提供您自己的 JPEG 解碼器。 相反地,您應該委派給 Windows 映像處理元件 (WIC) 所提供的 JPEG 解碼器。

如需縮圖的詳細資訊,請參閱實作 IWICBitmapFrameEncode上的SetThumbnail方法。

GetColorCoNtexts

GetColorCoNtexts 會 傳回有效的色彩內容, (也稱為色彩設定檔,) 與此畫面中的影像相關聯。 在大部分情況下,這只會是一個,但可能有兩個或很少更多的情況。 呼叫端會傳入一或多個 IWICColorCoNtext 物件,並將 cCount 參數設定為指出傳入多少個。 這個方法會將與影像相關聯之色彩設定檔的實際色彩內容資料填入 IWICColorCoNtext 物件。 將 pcActualCount 參數設定為與影像相關聯的實際色彩內容數目,即使這大於您可以傳回的數位也一樣。 (如果色彩內容比呼叫端傳入的 IWICColorCoNtext 物件數目多,這會告訴呼叫端有一或多個可用的其他物件。)

GetMetadataQueryReader

GetMetadataQueryReader 會傳回 IWICMetadataQueryReader ,應用程式可用來從影像框架擷取中繼資料。 此介面是由元資料處理程式所實作,並允許應用程式查詢屬於特定元資料格式的特定中繼資料屬性。 如需詳細資訊,請參閱 實作 IWICMetadataBlockReader

若要具現化IWICMetadataQueryReader,請在IWICComponentFactory上呼叫CreateQueryReaderFromBlockReader

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

hr = m_pComponentFactory->CreateQueryReaderFromBlockReader( 
  static_cast<IWICMetadataBlockWriter*>(this),
  &pQueryReader);

GetSize、GetPixelFormat 和 GetResolution

GetSizeGetPixelFormatGetResolution 都是自我說明的,並傳回影像的要求屬性。

CopyPixels

CopyPixels 是應用程式想要在記憶體中建立可轉譯為顯示器或印表機之點陣圖時呼叫的方法。 這是執行影像位實際解碼的方法。 參數是矩形,代表要複製到記憶體的來源影像中感興趣的區域;跨步,指定一個掃描行中的位元組數目;應用程式所配置之記憶體中的緩衝區大小;和緩衝區的指標,要求之映射位應該複製到其中。 (若要防止潛在的緩衝區溢位造成安全性弱點,請務必只將映射資料複製到緩衝區,如同 cbBufferSize 參數所指定。)

CopyPalette

只有索引像素格式的編解碼器必須實作 CopyPalette 方法。 如果影像使用索引格式,請使用此方法傳回影像中使用的色彩調色盤。 如果您的編解碼器沒有索引格式,請傳回WINCODEC_ERR_PALETTEUNAVAILABLE。

參考

IWICBitmapSource

IWICBitmapDecoder

IWICBitmapFrameDecode

概念

實作 IWICBitmapSource

實作 IWICMetadataBlockReader

如何撰寫WIC-Enabled CODEC

Windows 映像處理元件概觀