Ü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:

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.

Konzept

Übersicht über die Windows-Bildverarbeitungskomponente

Übersicht über die Codierung

Komponentenentwicklung