Sdílet prostřednictvím


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

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.

Koncepční

Přehled komponent Windows Imaging

přehled kódování

vývoj komponent