Megosztás a következőn keresztül:


Az IWICBitmapFrameDecode implementálása

IWICBitmapFrameDecode

IWICBitmapFrameDecode a keretszintű felület, amely hozzáférést biztosít a tényleges képbitekhez. Ezt a felületet a keretszintű dekódolási osztályban implementálhatja. Mivel az IWICBitmapSourceszármazik, az IWICBitmapFrameDecode implementálása magában foglalja az IWICBitmapSource metódusok implementálását. Az IWICBitmapFrameDecode további metódusai hozzáférést biztosítanak a keretszintű miniatűrhöz, a kép bármilyen színkörnyezetéhez és a képhez tartozó metaadat-lekérdezésolvasóhoz.

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 az aktuális kocka miniatűrjét adja vissza. Teljesítménybeli okokból a miniatűrök leggyakrabban JPEG formátumban vannak kódolva. A dekóder előzetes verziójához hasonlóan nem szükséges vagy ajánlott saját JPEG dekódert biztosítani a miniatűrökhöz. Ehelyett delegálnia kell a Windows Képalkotó összetevő (WIC) által biztosított JPEG-dekódert.

További információért a miniatűrökről lásd a SetThumbnail metódust a Implementing IWICBitmapFrameEncodedokumentumban.

GetColorContexts

GetColorContexts a képhez tartozó érvényes színkörnyezeteket (más néven színprofilokat) adja vissza. A legtöbb esetben ez csak egy lesz, de lehetnek olyan esetek, amikor kettő vagy ritkán több is van. A hívó egy vagy több IWICColorContext objektumot ad át, és beállítja a cCount paramétert, hogy jelezze, hányat ad át. Ez a metódus feltölti az IWICColorContext objektumokat a képhez társított színprofilok tényleges színösszeállítási adataival. Állítsa a pcActualCount paramétert a képhez társított színkörnyezetek tényleges számára, még akkor is, ha ez nagyobb, mint a visszaadható szám. (Abban az esetben, ha több színkörnyezet érhető el, mint a hívó által átadott IWICColorContext objektumok száma, ez azt jelzi a hívónak, hogy van egy vagy több elérhető.)

GetMetadataQueryReader

GetMetadataQueryReader egy IWICMetadataQueryReader ad vissza, amellyel egy alkalmazás metaadatokat kérhet le a képkeretből. Ezt a felületet egy metaadat-kezelő valósítja meg, és lehetővé teszi, hogy az alkalmazás lekérdezhesse az adott metaadat-formátumhoz tartozó adott metaadat-tulajdonságokat. További információért lásd: Implementing IWICMetadataBlockReader.

Egy IWICMetadataQueryReaderpéldányosításához hívja meg CreateQueryReaderFromBlockReader a IWICComponentFactory.

IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;

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

GetSize, GetPixelFormat és GetResolution

GetSize, GetPixelFormatés GetResolution magától értetődőek, és visszaadják a kép kért tulajdonságait.

CopyPixels

CopyPixels az a metódus, amellyel az alkalmazás meghívja, ha olyan bitképet szeretne létrehozni a memóriában, amely megjeleníthető a kijelzőn vagy a nyomtatón. Ez az a módszer, amely elvégzi a képbitek tényleges dekódolását. A paraméterek közé tartozik egy téglalap, amely a forráskép érdekes régióját jelöli, amit a memóriába kell másolni; a lépésszám, amely megadja a bájtok számát egy vizsgálati sorban; a puffer mérete a memóriában, amelyet az alkalmazás lefoglalt; és egy mutató arra a pufferre, amelybe a kért képbiteket ki kell másolni. (Annak érdekében, hogy a lehetséges puffertúlcsordulások ne vezessenek be biztonsági réseket, ügyeljen arra, hogy csak annyi képadatot másoljon a pufferbe, amennyit a cbBufferSize paraméter megad.)

CopyPalette

Csak az indexelt képpontformátumú kodekek implementálják a CopyPalette metódust. Ha egy kép indexelt formátumot használ, ezzel a módszerrel adja vissza a képen használt színek palettáját. Ha a kodek nem rendelkezik indexelt formátummal, adja vissza WINCODEC_ERR_PALETTEUNAVAILABLE.

Referencia

IWICBitmapSource

IWICBitmapDecoder

IWICBitmapFrameDecode

fogalmi

IWICBitmapSource implementálása

IWICMetadataBlockReader implementálása

WIC-Enabled CODEC- írása

Windows képalkotó összetevő áttekintése