IWICBitmapFrameDecode implementeren
IWICBitmapFrameDecode
IWICBitmapFrameDecode is de interface op frameniveau die toegang biedt tot de werkelijke afbeeldingsbits. U implementeert deze interface in uw coderingsklasse op frameniveau. Omdat deze is afgeleid van IWICBitmapSource, bevat uw implementatie van IWICBitmapFrameDecode een implementatie van de IWICBitmapSource methoden. De aanvullende methoden voor IWICBitmapFrameDecode bieden toegang tot de miniatuur op frameniveau, eventuele kleurcontexten voor de afbeelding en de metagegevensquerylezer voor het frame.
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
- GetColorContexts
- GetMetadataQueryReader
- GetSize, GetPixelFormat en GetResolution
- CopyPixels
- CopyPalette-
GetThumbnail
GetThumbnail retourneert de miniatuur voor het huidige frame. Om prestatieredenen worden miniaturen meestal gecodeerd in een JPEG-formaat. Net als bij de preview op de decoder is het niet nodig of aanbevolen om uw eigen JPEG-decoder voor miniaturen op te geven. In plaats daarvan moet u delegeren aan de JPEG-decoder die wordt geleverd door Windows Imaging Component (WIC).
Zie de methode SetThumbnail bij het implementeren van IWICBitmapFrameEncodevoor meer informatie over miniaturen.
GetColorContexts
GetColorContexts retourneert de geldige kleurcontexten (ook wel kleurprofielen genoemd) die zijn gekoppeld aan de afbeelding in dit frame. In de meeste gevallen is dit slechts één, maar er kunnen gevallen zijn waarin er twee of zelden meer zijn. De aanroeper kan een of meer IWICColorContext--objecten doorgeven, waarbij de parameter cCount wordt ingesteld om het aantal doorgegeven objecten aan te geven. Met deze methode wordt de IWICColorContext objecten gevuld met de werkelijke kleurcontextgegevens voor de kleurprofielen die aan de afbeelding zijn gekoppeld. Stel de parameter pcActualCount in op het werkelijke aantal kleurcontexten dat aan de afbeelding is gekoppeld, zelfs als dit groter is dan het getal dat u kunt retourneren. (In het geval dat er meer kleurcontexten beschikbaar zijn dan het aantal IWICColorContext objecten die door de aanroeper zijn doorgegeven, geeft dit de aanroeper aan dat er een of meer andere beschikbaar zijn.)
GetMetadataQueryReader
GetMetadataQueryReader retourneert een IWICMetadataQueryReader- die een toepassing kan gebruiken om metagegevens op te halen uit het afbeeldingsframe. Deze interface wordt geïmplementeerd door een metagegevenshandler en stelt een toepassing in staat om query's uit te voeren op specifieke metagegevenseigenschappen die behoren tot een bepaalde metagegevensindeling. Zie IWICMetadataBlockReader implementerenvoor meer informatie.
Als u een IWICMetadataQueryReaderwilt instantiëren, roept u CreateQueryReaderFromBlockReader aan op de IWICComponentFactory-.
IWICMetadataQueryReader* pQueryReader = NULL;
HRESULT hr;
hr = m_pComponentFactory->CreateQueryReaderFromBlockReader(
static_cast<IWICMetadataBlockWriter*>(this),
&pQueryReader);
GetSize, GetPixelFormat en GetResolution
GetSize, GetPixelFormaten GetResolution zijn vanzelfsprekend en geven de aangevraagde eigenschappen van de afbeelding terug.
Kopieer Pixels
Copy Pixels is de methode die een toepassing aanroept wanneer deze een bitmap in het geheugen wil maken die kan worden weergegeven op het beeldscherm of de printer. Dit is de methode waarmee de werkelijke decodering van de afbeeldingsbits wordt uitgevoerd. De parameters zijn een rechthoek, die het interessegebied in de broninstallatiekopie vertegenwoordigt om naar het geheugen te kopiëren; de stride, waarmee het aantal bytes in één scanregel wordt aangegeven; de grootte van de buffer in het geheugen die door de toepassing is toegewezen; en een aanwijzer naar de buffer waarin de aangevraagde installatiekopieën moeten worden gekopieerd. (Als u wilt voorkomen dat potentiële bufferoverschrijdingen beveiligingsproblemen introduceren, moet u alleen zoveel afbeeldingsgegevens naar de buffer kopiëren als de cbBufferSize parameter specificeert.)
CopyPalette
Alleen codecs met geïndexeerde pixelindelingen moeten de methode CopyPalette implementeren. Als een afbeelding een geïndexeerde indeling gebruikt, gebruikt u deze methode om het palet met kleuren te retourneren die in de afbeelding worden gebruikt. Als uw codec geen geïndexeerde indeling heeft, geef dan WINCODEC_ERR_PALETTEUNAVAILABLE terug.
Verwante onderwerpen
-
Referentie
-
conceptuele
-
Een WIC-Enabled CODEC- schrijven
-
Overzicht van Windows Imaging-onderdelen