Implementace IWICBitmapFrameDecode
IWICBitmapFrameDecode
IWICBitmapFrameDecode je rozhraní na úrovni rámce, které poskytuje přístup k skutečným bitům obrázků. Toto rozhraní implementujete ve třídě dekódování na úrovni rámce. Vzhledem k tomu, že je odvozena z IWICBitmapSource, vaše implementace IWICBitmapFrameDecode bude zahrnovat implementaci IWICBitmapSource metod. Další metody pro IWICBitmapFrameDecode poskytují přístup k miniaturě na úrovni rámce, libovolným barevným kontextům obrázku a čtečkě dotazů metadat pro rámec.
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
- ZískatBarevnéKontexty
- GetMetadataQueryReader
- GetSize, GetPixelFormat a GetResolution
- CopyPixels
- KopírovatPaletu
GetThumbnail
GetThumbnail vrátí miniaturu aktuálního snímku. Z důvodů výkonu jsou miniatury nejčastěji kódovány ve formátu JPEG. Stejně jako u náhledu na dekodéru není nutné ani nedoporučujeme poskytovat vlastní dekodér JPEG pro miniatury. Místo toho byste měli delegovat na dekodér JPEG poskytovaný komponentou Windows Imaging Component (WIC).
Další informace o miniaturách naleznete v metodě SetThumbnail při implementaci IWICBitmapFrameEncode.
ZískejBarevnéKontexty
GetColorContexts vrátí platné kontexty barev (označované také jako profily barev) přidružené k obrázku v tomto rámečku. Ve většině případů to bude jenom jedno, ale může existovat případy, kdy existují dvě nebo zřídkakdy více. Volající předá jeden nebo více IWICColorContext objekty a nastaví parametr cCount tak, aby vyznačil, kolik se předává. Tato metoda naplní IWICColorContext objekty skutečnými daty kontextu barev pro profily barev přidružené k obrázku. Nastavte parametr pcActualCount na skutečný počet kontextů barev přidružených k obrázku, i když je větší než číslo, které můžete vrátit. (V případě, že je k dispozici více kontextů barev, než je počet předaných IWICColorContext objektů, to znamená, že je k dispozici jeden nebo více dalších.)
GetMetadataQueryReader
GetMetadataQueryReader vrátí IWICMetadataQueryReader, kterou může aplikace použít k načtení metadat z rámce obrázku. Toto rozhraní je implementováno obslužnou rutinou metadat a umožňuje aplikaci dotazovat se na konkrétní vlastnosti metadat patřící do konkrétního formátu metadat. Další informace naleznete v části Implementace IWICMetadataBlockReader.
Chcete-li vytvořit instanci IWICMetadataQueryReader, zavolejte CreateQueryReaderFromBlockReader na IWICComponentFactory.
IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;
hr = m_pComponentFactory->CreateQueryReaderFromBlockReader(
static_cast<IWICMetadataBlockWriter*>(this),
&pQueryReader);
GetSize, GetPixelFormat a GetResolution
GetSize, GetPixelFormata GetResolution jsou vysvětlující a vrátí požadované vlastnosti obrázku.
CopyPixels
CopyPixels je metoda, kterou aplikace volá, když chce vytvořit rastr v paměti, který lze vykreslit na displej nebo tiskárnu. Toto je metoda, která provádí skutečné dekódování bitů obrázku. Parametry jsou obdélník, který představuje oblast zájmu zdrojového obrázku pro kopírování do paměti; krok, který určuje počet bajtů v jednom řádku skenování; velikost vyrovnávací paměti v paměti, kterou aplikace přidělila; a ukazatel na vyrovnávací paměť, do které se mají zkopírovat požadované bity obrázku. (Pokud chcete zabránit potenciálnímu přetečení vyrovnávací paměti a tím zavedení bezpečnostních slabin, ujistěte se, že do vyrovnávací paměti zkopírujete pouze tolik obrazových dat, kolik určuje parametr cbBufferSize.)
CopyPalette
Pouze kodeky s indexovanými pixelovými formáty musí implementovat metodu CopyPalette. Pokud obrázek používá indexovaný formát, použijte tuto metodu k vrácení palety barev použitých v obrázku. Pokud váš kodek nemá indexovaný formát, vraťte WINCODEC_ERR_PALETTEUNAVAILABLE.
Související témata
-
Referenční
-
koncepční
-
implementace IWICBitmapSource