Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Temat wprowadza dekoder map bitowych, podstawowy składnik kodeka Windows Imaging Component (WIC) używanego do dekodowania plików obrazów ze strumienia.
Ten temat zawiera następujące sekcje.
- Wprowadzenie
- Natywne dekodery mapy bitowe
- Tworzenie dekodera map bitowych
- rozszerzalność dekodera
- Tematy pokrewne
Wprowadzenie
Dekodery bitmapy można postrzegać jako zewnętrzny kontener obrazu cyfrowego i zapewniają dostęp do globalnych właściwości oraz ramek obrazu. Niektóre formaty obrazów obsługują globalne miniatury, podglądy, konteksty kolorów lub metadane, a inne udostępniają te właściwości tylko na poziomie ramki. Należy jednak pamiętać, że wiele standardowych formatów obrazów nie obsługuje tych właściwości globalnych. W związku z tym wiele natywnych implementacji koderów udostępnianych przez WIC nie obsługuje większości tych globalnych właściwości. Aby uzyskać informacje na temat obsługi właściwości globalnych, zobacz tabelę w sekcji Dekodatory natywnej mapy bitowej w tym temacie.
W funkcji WIC dekodatory map bitowych są reprezentowane przez interfejs IWICBitmapDecoder i zapewnia dostęp do tych globalnych właściwości mapy bitowej i, co ważniejsze, ramek, które zawiera. Interfejs IWICBitmapFrameDecode reprezentuje pojedynczą ramkę mapy bitowej i jest szczegółowo omówiony w Omówienie źródeł map bitowych.
Natywne dekodatory map bitowych
WIC udostępnia kilka natywnych implementacji interfejsu IWICBitmapDecoder dla standardowych formatów obrazów internetowych i formatu HD Photo o wysokim zakresie dynamicznym. W poniższej tabeli wymieniono dostępne natywne dekodatory, nazwę identyfikatora klasy i obsługę właściwości globalnych. Chociaż funkcja może nie obsługiwać właściwości, takiej jak miniatury na poziomie globalnym, format obrazu może obsługiwać takie właściwości na poziomie pojedynczej ramki.
| Format obrazu | Nazwa CLSID | Miniatury | Podglądy | Konteksty kolorów | Metadane |
|---|---|---|---|---|---|
| BMP | CLSID_WICBmpDecoder | Nie | Nie | Nie | Nie |
| GIF | CLSID_WICGifDecoder | Nie | Nie | Nie | Tak |
| ICO | CLSID_WICIcoDecoder | Nie | Nie | Nie | Nie |
| JPEG | CLSID_WICJpegDecoder | Nie | Nie | Nie | Nie |
| PNG | CLSID_WICPngDecoder | Nie | Nie | Nie | Nie |
| TIFF | CLSID_WICTiffDecoder | Nie | Nie | Nie | Nie |
| Zdjęcie HD | CLSID_WICWmpDecoder | Nie | Tak | Nie | Nie |
Tworzenie dekodera mapy bitowej
Aby zdekodować obraz przy użyciu funkcji WIC, należy najpierw utworzyć wystąpienie IWICBitmapDecoder dla docelowego formatu obrazu. Wystąpienie dekodera umożliwia dostęp do globalnych właściwości i metadanych, jeśli są obsługiwane, a także klatek obrazów. Fabryka obrazów WIC, IWICImagingFactory, udostępnia kilka metod tworzenia dekodatorów map bitowych. Następujące metody fabryczne są udostępniane do tworzenia dekoderów map bitowych.
Poniższy kod przedstawia sposób tworzenia dekodera mapy bitowej przy użyciu nazwy pliku obrazu i pobierania pierwszej ramki obrazu.
// 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);
}
Rozszerzalność dekodera
Jedną z podstawowych funkcji WIC jest struktura rozszerzalności, która umożliwia deweloperom koderów kodujących tworzenie własnych koderów obrazów i uzyskiwanie tej samej obsługi platformy co natywne implementacje koderów obrazów. Pojedynczy spójny zestaw interfejsów jest używany do wszystkich przetwarzania obrazów, niezależnie od formatu obrazu. Każda aplikacja korzystająca z funkcji WIC uzyskuje automatyczną obsługę nowych formatów obrazów zaraz po zainstalowaniu kodera. Aby uzyskać więcej informacji na temat tworzenia kodeków, zobacz tematy w Component Development. Aby uzyskać więcej informacji na temat programowania dekodera, zobacz Implementowanie WIC-Enabled dekodera.
Tematy pokrewne