Přehled dekódování
Toto téma představuje rastrový dekodér, základní komponentu kodeku WINDOWS Imaging Component (WIC), která slouží k dekódování souborů obrázků ze streamu.
Toto téma obsahuje následující části.
- Úvod
- Nativní bitmapové dekodéry
- vytvoření rastrového dekodéru
- Rozšiřitelnost dekodérů
- související témata
Úvod
Rastrové dekodéry lze zobrazit jako vnější kontejner digitálního obrázku a poskytuje přístup k globálním vlastnostem a snímkům obrázků. Některé formáty obrázků podporují globální miniatury, náhledy, kontexty barev nebo metadata, zatímco jiné tyto vlastnosti poskytují pouze na úrovni rámce. Všimněte si však, že mnoho standardních formátů obrázků tyto globální vlastnosti nepodporuje. Mnoho nativních implementací kodeků, které poskytuje WIC, proto většinu těchto globálních vlastností nepodporuje. Informace o podpoře globálních vlastností naleznete v tabulce v sekci nativní dekodéry bitmap tohoto tématu.
Ve WIC jsou rastrové dekodéry reprezentovány rozhraním IWICBitmapDecoder a poskytují přístup k těmto globálním vlastnostem rastrového obrázku a, co je důležitější, k rámcům, které obsahuje. IWICBitmapFrameDecode rozhraní představuje individuální bitmapový rámeček a je podrobně popsán v Přehled zdrojů bitmap.
Nativní bitmapové dekodéry
WIC poskytuje několik nativních implementací IWICBitmapDecoder rozhraní pro standardní formáty webových obrázků a formát HD Photo s vysokým dynamickým rozsahem. Následující tabulka uvádí dostupné nativní dekodéry, název identifikátoru třídy a podporu globálních vlastností. I když funkce nemusí podporovat vlastnost, jako jsou miniatury na globální úrovni, formát obrázku může podporovat tyto vlastnosti na úrovni jednotlivých snímků.
Formát obrázku | Název CLSID | Miniatury | Předpremiéry | Barevné kontexty | Metadata |
---|---|---|---|---|---|
BMP | CLSID_WICBmpDecoder | Ne | Ne | Ne | Ne |
GIF | CLSID_WICGifDecoder | Ne | Ne | Ne | Ano |
ICO | CLSID_WICIcoDecoder | Ne | Ne | Ne | Ne |
JPEG | CLSID_WICJpegDecoder | Ne | Ne | Ne | Ne |
PNG | CLSID_WICPngDecoder | Ne | Ne | Ne | Ne |
TIFF | CLSID_WICTiffDecoder | Ne | Ne | Ne | Ne |
HD Fotografie | CLSID_WICWmpDecoder | Ne | Ano | Ne | Ne |
Vytvoření bitmapového dekodéru
Pokud chcete dekódovat obrázek pomocí WIC, musíte nejprve vytvořit instanci IWICBitmapDecoder pro cílový formát image. Instance dekodéru umožňuje přístup ke globálním vlastnostem a metadatům, pokud je to podporováno, a také k snímkům obrázků. WiC imaging factory, IWICImagingFactory, poskytuje několik metod pro vytváření rastrových dekodérů. K vytvoření rastrových dekodérů jsou k dispozici následující tovární metody.
Následující kód ukazuje, jak vytvořit rastrový dekodér pomocí názvu souboru obrázku a načíst první rámec obrázku.
// 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);
}
Rozšiřitelnost dekodérů
Jednou ze základních funkcí WIC je architektura rozšiřitelnosti, která vývojářům kodeků umožňuje vyvíjet vlastní kodeky obrázků a získat stejnou podporu platformy jako nativní implementace kodeků obrázků. Jedna konzistentní sada rozhraní se používá pro veškeré zpracování obrázků bez ohledu na formát obrázku. Každá aplikace používající WIC získá automatickou podporu nových formátů obrázků hned po instalaci kodeku. Další informace o vývoji kodeků naleznete v tématech v tématu Component Development. Další informace o vývoji dekodéru naleznete v tématu Implementace dekodéru WIC-Enabled.
Související témata
-
Koncepční
-
Přehled komponent Windows Imaging