Übersicht über die Decodierung
In diesem Thema wird der Bitmapdecoder vorgestellt, eine zentrale WiC-Codeckomponente (Windows Imaging Component), die zum Decodieren von Bilddateien aus einem Stream verwendet wird.
Dieses Thema enthält folgende Abschnitte:
- Introduction (Einführung)
- Native Bitmap-Decoder
- Erstellen eines Bitmap-Decoders
- Decoder-Erweiterbarkeit
- Zugehörige Themen
Einführung
Bitmapdecoder können als äußerer Container eines digitalen Bilds angezeigt werden und bieten Zugriff auf globale Eigenschaften und Bildrahmen. Einige Bildformate unterstützen globale Miniaturansichten, Vorschauen, Farbkontexte oder Metadaten, während andere diese Eigenschaften nur auf Frameebene bereitstellen. Beachten Sie jedoch, dass viele der Standardimageformate diese globalen Eigenschaften nicht unterstützen. Daher unterstützen viele der von WIC bereitgestellten nativen Codecimplementierungen die Mehrheit dieser globalen Eigenschaften nicht. Informationen zur Unterstützung globaler Eigenschaften finden Sie in der Tabelle im Abschnitt Native Bitmap Decoders dieses Themas.
In WIC werden Bitmapdecoder durch die IWICBitmapDecoder-Schnittstelle dargestellt und bieten Zugriff auf diese globalen Eigenschaften der Bitmap und vor allem auf die darin enthaltenen Frames. Die IWICBitmapFrameDecode-Schnittstelle stellt einen einzelnen Bitmapframe dar und wird in der Übersicht über Bitmapquellen ausführlich erläutert.
Native Bitmap-Decoder
WIC bietet mehrere native Implementierungen der IWICBitmapDecoder-Schnittstelle für die Standard-Webbildformate und das HD-Fotoformat mit hoher Dynamik. In der folgenden Tabelle sind die verfügbaren nativen Decoder, der Name des Klassenbezeichners und die Unterstützung für globale Eigenschaften aufgeführt. Obwohl ein Feature eine Eigenschaft wie Miniaturansichten auf globaler Ebene möglicherweise nicht unterstützt, unterstützt das Bildformat solche Eigenschaften möglicherweise auf einzelner Frameebene.
Bildformat | CLSID-Name | Miniaturbilder | Vorschauen | Farbkontexte | Metadaten |
---|---|---|---|---|---|
BMP | CLSID_WICBmpDecoder | Nein | Nein | Nein | Nein |
GIF | CLSID_WICGifDecoder | Nein | Nein | Nein | Ja |
ICO | CLSID_WICIcoDecoder | Nein | Nein | Nein | Nein |
JPEG | CLSID_WICJpegDecoder | Nein | Nein | Nein | Nein |
PNG | CLSID_WICPngDecoder | Nein | Nein | Nein | Nein |
TIFF | CLSID_WICTiffDecoder | Nein | Nein | Nein | Nein |
HD-Foto | CLSID_WICWmpDecoder | Nein | Ja | Nein | Nein |
Erstellen eines Bitmap-Decoders
Um ein Bild mit WIC zu decodieren, müssen Sie zunächst eine instance des IWICBitmapDecoder für das Zielbildformat erstellen. Der Decoder instance ermöglicht Ihnen den Zugriff auf die globalen Eigenschaften und Metadaten, sofern unterstützt, sowie auf die Bildrahmen. Die WIC-Imaging factory, IWICImagingFactory, bietet mehrere Methoden zum Erstellen von Bitmapdecodern. Die folgenden Factorymethoden werden bereitgestellt, um Bitmapdecoder zu erstellen.
Der folgende Code veranschaulicht, wie Sie einen Bitmapdecoder mithilfe eines Bilddateinamens erstellen und den ersten Frame des Bilds abrufen.
// 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);
}
Decoder-Erweiterbarkeit
Eines der Kernfeatures von WIC ist ein Erweiterbarkeitsframework, das es Codec-Entwicklern ermöglicht, ihre eigenen Bildcodecs zu entwickeln und die gleiche Plattformunterstützung wie die nativen Implementierungen von Bildcodecs zu erhalten. Für die gesamte Bildverarbeitung wird unabhängig vom Bildformat ein einzelner, konsistenter Satz von Schnittstellen verwendet. Jede Anwendung, die WIC verwendet, erhält automatisch Unterstützung für neue Imageformate, sobald der Codec installiert ist. Weitere Informationen zur Codecentwicklung finden Sie in den Themen unter Komponentenentwicklung. Weitere Informationen zur Decoderentwicklung finden Sie unter Implementieren eines WIC-Enabled Decoders.
Zugehörige Themen
-
Konzept