Übersicht über native Pixelformate

In diesem Artikel erhalten Sie eine Einführung zu den durch die Windows-Bilderstellungskomponente (WIC) bereitgestellten Pixelformate.

Ein Pixelformat beschreibt das Speicherlayout jedes Pixels in einem Bildmuster. Dieses Speicherlayout zeigt, wie die Bilddaten eines Bitmusters codiert werden, indem sie das numerische Format und die Anordnung des Farbkanals angeben. Die WIC unterstützt mehrere numerische Formate für verschiedene Farbkanal-Anordnungsschemata, die eine Vielzahl von Pixelformaten bieten.

Bittiefe

Bei der Bittiefe handelt es sich um die Anzahl der Bits, die zum Codieren der einzelnen Farbkanäle verwendet werden. Heutzutage verwenden die meisten Digitalbilder eine Bittiefe von 8, d. h. jeder Farbkanal in einem Pixel wird durch 8 Bit dargestellt, und 2⁸ (256) eindeutige Werte pro Kanal werden bereitstellt. Ein Bild mit einer Bittiefe von 8 und drei Farbkanälen (z. B. Rot, Grün und Blau) verwendet 24 Bits pro Pixel (bpp), was 2²⁴ (16.777.216) verschiedene Farben pro Pixel bereitstellt.

Für eine bessere Farbauflösung kann eine Bittiefe von 16 oder 32 verwendet werden. Dies stellt auf Kosten von mehr Arbeitsspeicher pro Pixel für jeden Farbkanal 2¹⁶ (65.536) oder 2¹² eindeutige Werten zur Verfügung.

In einigen Formaten ist die Bittiefe kein Vielfaches von 8. Diese Formate werden als gepackte Formate bezeichnet, da die Farbkanäle in einem Pixel nicht an Bytegrenzen ausgerichtet sind. Beispiel: Die Bittiefe von 5 mit drei Farbkanälen kann in 16 Bits gespeichert werden, einschließlich 1 Bit Abstand, um die Pixel an Bytes auszurichten. Gepackte Formate sind nützlich, wenn Arbeitsspeicher oder Verarbeitungsleistung begrenzt sind.

Numerische Codierung

Bei den meisten heutigen digitalen Bildern werden Bytes ohne Vorzeichen und kurze Ganzzahlen ohne Vorzeichen verwendet, um den numerischen Bereich jedes Farbkanals zu beschreiben. Der Minimalwert (0) stellt die Nullintensität in einem einzelnen Farbkanal dar. Schwarz ergibt sich, wenn alle Farbkanäle NULL sind. Auf ähnliche Weise stellt der Maximalwert die volle Intensität dar. Weiß ergibt sich, wenn alle Farbkanäle die volle Intensität haben. Bei einer Bittiefe von 8 bietet ein UINT 256 eindeutige Werte pro Farbkanal (0 bis 255). Ein UINT mit 16 Bits bietet 65.536 eindeutige Werte pro Farbkanal (0 bis 65.535).

Darüber hinaus unterstützt WIC Festkomma- und Gleitkommaformate. Diese Formate unterstützen größere dynamische Bereiche, da der gesamte numerische Bereich jedes Farbkanals größer als der sichtbare Bereich ist. Daher können Farben bei den Zwischenschritten der Bildverarbeitung ober- oder unterhalb des sichtbaren Bereichs ohne Verlust von Bildinformationen angepasst werden.

Numerische Festkommacodierung

16-Bit-Festkommawerte werden als s2.13 interpretiert: Zeichenbit, zwei Integer-Bits und dreizehn Bruchbits. Mit dieser Interpretation kann ein numerischer Bereich von −4,0 bis +3,999... dargestellt werden, wobei der Wert 1,0 durch den Wert 8192 (0x2000) einer ganzen Zahl mit Vorzeichen dargestellt wird.

32-Bit-Festkommawerte werden als s7.24 interpretiert: Zeichenbit, sieben Integer-Bits und 24 Bruchbits. Mit dieser Interpretation kann ein numerischer Bereich von −128,0 bis +127,999... dargestellt werden, wobei der Wert 1,0 durch den Wert 16777216 (0x01000000) einer ganzen Zahl mit Vorzeichen dargestellt wird.

Farbkanäle

Die Farbkanäle eines Pixelformats definieren das Speicherlayout jeder Farbe innerhalb der Bilddaten eines Bitmusters. Es gibt eine Vielzahl verschiedener Farbkanalstrukturen, die in den heutigen digitalen Bildern üblich sind, und WIC bietet Unterstützung für viele dieser Strukturen.

RGB/BGR-Farbmodell

RGB- und BGR-Formate beschreiben Farben in einem additiven Farbmodell. Die häufigste Methode zur Beschreibung eines Bilds ist mit drei separaten Farbkanälen, die die Farben Rot (R), Grün (G) und Blau (B) darstellen. WIC bietet Unterstützung für diese drei Kanäle in der Reihenfolge Rot-Grün-Blau (RGB) oder Blau-Grün-Rot (BGR). Dies ist die Reihenfolge, in der jeder Farbkanal innerhalb des sequenziellen Bitstreams angezeigt wird. Beispielsweise ist jedes Pixel im GUID_WICPixelFormat32bppRGB-Format 32 Bit breit. Der rote Kanal ist das erste, am wenigsten signifikante Byte im Speicher, gefolgt von Grün und dann Blau. Umgekehrt befinden sich die Farbkanäle im GUID_WICPixelFormat32bppBGR Format in der entgegengesetzten Reihenfolge. WIC unterstützt eine Reihe von RGB/BGR-Formaten, einschließlich spezieller gepackter Bitformate wie GUID_WICPixelFormat16bppBGR555.

Hinweis

Die Farbkanäle der speziellen BGR-gepackten Bitformate sind keine Vielfachen von 8 wie die Farbkanäle in typischen Pixelformaten. Dies bedeutet, dass die Kanalwerte nicht an Bytes ausgerichtet sind. Seien Sie beim Lesen von gepackten Bitfarbkanälen aufmerksam.

Neben den RGB- und BGR-Formaten stellt WIC auch RGB- und BGR-Pixelformate bereit, die einen Alphakanal (A) unterstützen. Der Alphakanal stellt Deckkraftdaten für das Pixel bereit. Bei Formaten mit einem hinzugefügten Alphakanal ist der Alphakanal in der Regel der letzte in der Farbkanalreihenfolge. Beispielsweise ist die Bytereihenfolge im Pixelformat GUID_WICPixelFormat32bppBGRA blau, grün und rot, gefolgt vom Alphakanal.

WIC unterstützt auch vorab multiplizierte (P)-Alpha-RGB-Pixelformate. In einem typischen RGBA-Pixelformat sind die Rot-, Grün- und Blaufarbwerte die tatsächlichen Farbwerte für das Bild. Um ein zusammengesetztes Bild im RGBA-Standardformat zu erstellen, muss der Alphawert des Vordergrundbilds mit dem roten, grünen und blauen Kanal multipliziert werden, bevor er der Farbe des Hintergrundbilds hinzugefügt wird. In einem vorab multiplizierten Alpha-RGB-Pixelformat wurde jeder Farbkanal bereits mit dem Alphawert multipliziert. Dies ist eine effizientere Methode der Bildkomposition mit Alphakanaldaten. Um die tatsächlichen Farbwerte jedes Kanals in einem PRGBA- oder PBGRA-Pixelformat abzurufen, muss die Alphakanalmultiplikation umgekehrt werden, indem Farbwerte durch den Alphawert dividiert werden.

CMYK-Farbmodell

CMYK ist ein subtrahierendes Farbmodell, das beim Drucken verwendet wird. Die von einem CMYK-Modell erzeugten Farben werden durch das Licht erzeugt, das nicht absorbiert, sondern reflektiert wird. CMYK ist ein Vierkanalmodell aus Cyan (C), Magenta (M), Gelb (Y) und Schwarz (K). Wenn alle vier Farbkanäle ihren Maximalwert haben, ist das Ergebnis Schwarz. Wie bei den RGB/BGR-Farbmodellen wird die Bytereihenfolge innerhalb des sequenziellen Bitdatenstroms durch den Namen des Pixelformats angegeben. Beispielsweise besteht jedes Pixel im Pixelformat GUID_WICPixelFormat32bppCMYK aus 32 Bits. Das erste Byte enthält den Cyanwert, gefolgt von Magenta, Gelb und Schwarz. WIC bietet Pixelformate für CMYK mit 32 und 64 Bits pro Pixel (bpp).

Neben dem CMYK-Standardfarbmodell bietet WIC auch CMYK mit Alpha. Auf diese Weise können CMYK-Bilder Alphablendingdaten aufweisen, die dem RGB/BGR-Farbmodell ähneln. Der Alphakanal befindet sich im sequenziellen Bitstream eines Bitmusters unmittelbar nach Schwarz.

n-Kanal-Farbmodell

Aus Flexibilitätsgründen bietet WIC auch Pixelformate, die nicht über eine vordefinierte Kanalreihenfolge verfügen. WIC bietet Pixelformate, die drei bis acht Kanäle fortlaufender Bilddaten in Bittiefen von 8 bis 16 unterstützen. Im Gegensatz zu den RGB/BGR- und CMYK-Pixelformaten geben n-Kanalformate nicht die Kanalreihenfolge an, sondern die Anzahl der verfügbaren Farbkanäle. Beispielsweise besteht jedes Pixel im Pixelformat GUID_WICPixelFormat32bpp4Channels aus 32 Bits, wobei jeder der vier Kanäle ein einzelnes Byte belegt.

WIC stellt auch Pixelformate für n-Kanal mit Alpha bereit. Auf diese Weise können n-Kanal-Bilder Alphablendingdaten aufweisen, die den RGB/BGR- und CMYK-Farbmodellen ähneln. Der Alphakanal befindet sich im sequenziellen Bitstream eines Bitmusters unmittelbar nach dem letzten Farbkanal.

Indizierte und Graustufenfarbmodelle

Indizierte Formate verwenden eine Farbtabelle, die als Palette bezeichnet wird. Die Palette wird außerhalb der Pixeldaten gespeichert oder implizit definiert. Der Wert der einzelnen Pixel im Bild ist ein Index in der Palette. Bei einem indizierten Format bezieht sich die Anzahl der Bits pro Pixel direkt auf die Anzahl der Einträge in der Palette. Dadurch wird die für die Darstellung des Bilds erforderliche Datenmenge erheblich reduziert, aber auch die Anzahl der für das Bild verfügbaren Farben eingeschränkt. WIC unterstützt indizierte Formate mit 1, 2, 4 oder 8 bpp.

Bei Monochromformaten (Graustufen) unterstützt WIC 1, 2, 4, 8, 16 und 32 Bits pro Pixel. Bei Bittiefen von 1, 8, 16 und 32 werden die Farbdaten in einem einzigen Kanal gespeichert. Bei Bittiefen von 2 oder 4 sind Pixel Indizes in einer Graustufenpalette.

YCbCr-Farbmodell

WIC fügt Unterstützung für das YCbCr-Farbmodell für JPEG und JFIF hinzu. YCbCr trennt Farben in eine Lumakomponente (Y) und zwei Chromakomponenten (Cb und Cr). Viele JPEG-Dateien speichern Bilddaten nativ mithilfe des YCbCr-Farbmodells.

Das menschliche visuelle System ist weniger empfindlich für Veränderungen in der Chroma als Luma, und YCbCr-Formate können diese geringere Empfindlichkeit nutzen, indem die Menge an Chromadaten reduziert wird, die relativ zu Luma gespeichert werden. Dies geschieht, indem Chroma und Luma auf separaten Ebenen gespeichert und jede Komponentenebene auf eine andere Auflösung skaliert wird. Diese Methode wird als Farbunterabtastung bezeichnet.

Da Chroma- und Lumadaten separat gespeichert werden und möglicherweise unterschiedliche Auflösungen aufweisen, definiert WIC getrennte Luma- und Chromapixelformate. WIC unterstützt Daten mit 8 Bit pro Kanal.

WIC-Pixelformat

Die Pixelformate in WIC werden mithilfe von GUIDs definiert, um Konflikte mit IHVs zu vermeiden. WIC stellt einen Anzeigenamen bereit, um auf den GUID eines nativen Pixelformats zu verweisen. Die Namenskonvention für die WIC-Pixelformate lautet:

[GUID_WICPixelFormat][Bits pro Pixel][Kanalreihenfolge][Speichertyp]

Formatkomponente Beschreibung
GUID_WICPixelFormat Die beschreibende Identifikation für alle WIC-Pixelformate. Der Anzeigename für alle WIC-Pixel beginnt mit dieser Zeichenfolge.
Bits pro Pixel Die Anzahl der Bits pro Pixel (bpp), die für das Pixelformat verwendet werden.
Kanalreihenfolge Das Farbkanalmodell und die Reihenfolge der einzelnen Kanäle für das Format
Speichertyp Die für das Pixelformat verwendete numerische Codierung. Die Standardcodierung ist eine ganze Zahl ohne Vorzeichen. Wenn nichts auf die Farbmodellinformationen folgt, wird eine ganze Zahl ohne Vorzeichen (UINT) impliziert. Festkomma- und Gleitkommazahlen werden verwendet, um Pixelformate zu identifizieren, die Codierung mit Festkomma- bzw. Gleitkommazahlen verwenden.

Hinweis

Bei n-Kanal-Formaten gibt [Kanalreihenfolge] keine Farbreihenfolge an, sondern die Anzahl der verfügbaren Kanäle. Beispielsweise stellt GUID_WICPixelFormat24bpp3Channels drei Farbkanäle bereit, bei denen "3Channels" der Eintrag der [Kanalreihenfolge] ist, doch es wird nur die Anzahl der Kanäle und nicht die Reihenfolge angegeben.

Der Anzeigename GUID_WICPixelFormat24bppRGB bedeutet beispielsweise, dass das Pixelformat 24 Bit pro Pixel und das RGB-Farbmodell verwendet. Da der Name nicht explizit einen Speichertyp identifiziert, wird eine ganze Zahl ohne Vorzeichen impliziert.

WIC unterstützt mehrere Pixelformate. In den folgenden Tabellen werden ähnliche Pixelformate nach Farbstruktur gruppiert, und zusätzliche Informationen wie Bittiefe, Bits pro Pixel und numerische Codierung werden bereitgestellt. Jede Tabelle enthält folgende Informationen:

  • Anzeigename. Der Anzeigename des Pixelformats
  • Kanalanzahl. Die Anzahl der Farbkanäle
  • Bits pro Kanal. Die Anzahl der Bits pro Kanal (Bittiefe)
  • Bits pro Pixel. Die Anzahl der Bits pro Pixel, einschließlich aller Abstandsbits
  • Speichertyp. Die numerische Codierung der Bilddaten. Dieser Wert kann eine ganze Zahl ohne Vorzeichen (UINT), eine Festkommazahl (FixedPoint) oder eine Gleitkommazahl (Float) sein.

Hinweis

Aus Gründen der Übersichtlichkeit bezieht sich dieses Dokument auf Pixelformate nur mit ihren Anzeigenamen. Der tatsächliche Hexadezimalwert für die Pixelformate finden Sie in den wincodec.h/idl-Dateien.

Nicht definierte Pixelformate

Die folgende Liste zeigt generische Pixelformate, die verwendet werden, wenn das Pixelformat nicht definiert ist oder für einen Bildvorgang nicht wichtig ist.

  • GUID_WICPixelFormatUndefined
  • GUID_WICPixelFormatDontCare

Indizierte Pixelformate

In der folgenden Tabelle sind die indizierten Pixelformate aufgeführt, die von WIC bereitgestellt werden. In diesen Formaten ist der Wert für jedes Pixel ein Index in einer Farbpalette.

Anzeigename Kanalanzahl Bits pro Pixel Speichertyp
GUID_WICPixelFormat1bppIndexed 1 1 UINT
GUID_WICPixelFormat2bppIndexed 1 2 UINT
GUID_WICPixelFormat4bppIndexed 1 4 UINT
GUID_WICPixelFormat8bppIndexed 1 8 UINT

Verpackte Bitpixelformate

In der folgenden Tabelle sind die indizierten Pixelformate aufgeführt, die von WIC bereitgestellt werden. In diesen Formaten werden Farbkanaldaten nicht an Bytes ausgerichtet.

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormat16bppBGR555 3 5 16 UINT
GUID_WICPixelFormat16bppBGR565 3 5(B)/6(G)/5(R) 16 UINT
GUID_WICPixelFormat16bppBGRA555 4 5(B)/5(G)/5(R)/1(A) 16 UINT
GUID_WICPixelFormat32bppBGR101010 3 10 32 UINT
GUID_WICPixelFormat32bppRGBA1010102 4 10(R)/10(G)/10(B)/2(A) 32 UINT
GUID_WICPixelFormat32bppRGBA1010102XR 4 10(R)/10(G)/10(B)/2(A) 32 UINT
GUID_WICPixelFormat32bppR10G10B10A2 4 10(R)/10(G)/10(B)/2(A) 32 UINT
GUID_WICPixelFormat32bppR10G10B10A2HDR10 4 10(R)/10(G)/10(B)/2(A) 32 UINT

Für die Formate GUID_WICPixelFormat32bppBGR101010 und GUID_WICPixelFormat32bppRGBA1010102 wird der rote Kanal in den am wenigsten wichtigsten Bits gespeichert. Für die Formate GUID_WICPixelFormat32bppR10G10B10A2 und GUID_WICPixelFormat32bppR10G10B10A2HDR10 wird der rote Kanal in den wichtigsten Bits definiert. Dabei handelt es sich um dasselbe Layout wie DXGI_FORMAT_R10G10B10A2_UNORM.

Das Format GUID_WICPixelFormat32bppR10G10B10A2HDR10 ist das 10-Bit-Pixelformat für HDR10 (BT.2020-Farbraum und SMPTE ST.2084 EOTF).

Pixelformate für Graustufen

In der folgenden Tabelle sind die Graustufenformate aufgeführt, die von WIC bereitgestellt werden. In diesen Formaten stellen Farbdaten Graustufen dar.

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormatBlackWhite 1 1 1 UINT
GUID_WICPixelFormat2bppGray 1 2 2 UINT
GUID_WICPixelFormat4bppGray 1 4 4 UINT
GUID_WICPixelFormat8bppGray 1 8 8 UINT
GUID_WICPixelFormat16bppGray 1 16 16 UINT
GUID_WICPixelFormat16bppGrayFixedPoint 1 16 16 FixedPoint
GUID_WICPixelFormat16bppGrayHalf 1 16 16 Float
GUID_WICPixelFormat32bppGrayFloat 1 32 32 Float
GUID_WICPixelFormat32bppGrayFixedPoint 1 32 32 FixedPoint

RGB/BGR-Pixelformate

In der folgenden Tabelle sind die RGB/BGR-Formate aufgeführt, die von WIC bereitgestellt werden. Diese Formate trennen die primären Farbdaten in die Kanäle rot (R), grün (G) und blau (B). Ein zusätzlicher Alphakanal (A) wird in einigen Formaten für Deckkraftinformationen bereitgestellt.

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormat24bppRGB 3 8 24 UINT
GUID_WICPixelFormat24bppBGR 3 8 24 UINT
GUID_WICPixelFormat32bppBGR 3 8 32 UINT
GUID_WICPixelFormat32bppRGBA 4 8 32 UINT
GUID_WICPixelFormat32bppBGRA 4 8 32 UINT
GUID_WICPixelFormat32bppRGBE* 4 8 32 Float
GUID_WICPixelFormat32bppPRGBA 4 8 32 UINT
GUID_WICPixelFormat32bppPBGRA 4 8 32 UINT
GUID_WICPixelFormat48bppRGB 3 16 48 UINT
GUID_WICPixelFormat48bppBGR 3 16 48 UINT
GUID_WICPixelFormat48bppRGBFixedPoint 3 16 48 Fest
GUID_WICPixelFormat48bppBGRFixedPoint 3 16 48 Fest
GUID_WICPixelFormat48bppRGBHalf 3 16 48 Float
GUID_WICPixelFormat64bppRGBA 4 16 64 UINT
GUID_WICPixelFormat64bppBGRA 4 16 64 UINT
GUID_WICPixelFormat64bppPRGBA 4 16 64 UINT
GUID_WICPixelFormat64bppPBGRA 4 16 64 UINT
GUID_WICPixelFormat64bppRGBFixedPoint 3 16 64 Fest
GUID_WICPixelFormat64bppRGBAFixedPoint 4 16 64 Fest
GUID_WICPixelFormat64bppBGRAFixedPoint 4 16 64 Fest
GUID_WICPixelFormat64bppRGBHalf 3 16 64 Float
GUID_WICPixelFormat64bppRGBAHalf 4 16 64 Float
GUID_WICPixelFormat96bppRGBFixedPoint 3 32 96 Fest
GUID_WICPixelFormat128bppRGBFloat 3 32 128 Float
GUID_WICPixelFormat128bppRGBAFloat 4 32 128 Float
GUID_WICPixelFormat128bppPRGBAFloat 4 32 128 Float
GUID_WICPixelFormat128bppRGBFixedPoint 3 32 128 Fest
GUID_WICPixelFormat128bppRGBAFixedPoint 4 32 128 Fest

Hinweis

* Das GUID_WICPixelFormat32bppRGBE-Format codiert drei 16-Bit-Gleitkommawerte in 4 Byte: drei 8-Bit-Mantissen ohne Vorzeichen für die R-, G- und B-Kanäle sowie eine gemeinsame 8-Bit-Exponente. Dieses Format bietet 16-Bit-Gleitkommagenauigkeit in einer kleineren Pixeldarstellung.

Ab Windows 8 und dem Plattformupdate für Windows 7 bietet WIC zusätzliche Formate, die hier in der Tabelle dargestellt sind.

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormat32bppRGB 3 8 32 UINT
GUID_WICPixelFormat64bppRGB 3 16 64 UINT
GUID_WICPixelFormat96bppRGBFloat 3 32 96 FLOAT
GUID_WICPixelFormat64bppPRGBAHalf 4 16 64 FLOAT

CMYK-Pixelformate

In der folgenden Tabelle sind die CMYK-Formate aufgeführt, die von WIC bereitgestellt werden. Diese Formate trennen die primären Farbdaten in die Farbkanäle Cyan (C), Magenta (M), Gelb (Y) und Schwarz (K).

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormat32bppCMYK 4 8 32 UINT
GUID_WICPixelFormat64bppCMYK 4 16 64 UINT
GUID_WICPixelFormat40bppCMYKAlpha 5 8 40 UINT
GUID_WICPixelFormat80bppCMYKAlpha 5 16 80 UINT

n-Kanal-Pixelformate

In der folgenden Tabelle sind die n-Kanal-Formate aufgeführt, die von WIC bereitgestellt werden. Diese Formate stellen eine Reihe von nicht definierten Farbkanälen zum Speichern von Bilddaten bereit.

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormat24bpp3Channels 3 8 24 UINT
GUID_WICPixelFormat48bpp3Channels 3 16 48 UINT
GUID_WICPixelFormat32bpp3ChannelsAlpha 4 8 32 UINT
GUID_WICPixelFormat64bpp3ChannelsAlpha 4 16 64 UINT
GUID_WICPixelFormat32bpp4Channels 4 8 32 UINT
GUID_WICPixelFormat64bpp4Channels 4 16 64 UINT
GUID_WICPixelFormat40bpp4ChannelsAlpha 5 8 40 UINT
GUID_WICPixelFormat80bpp4ChannelsAlpha 5 16 80 UINT
GUID_WICPixelFormat40bpp5Channels 5 8 40 UINT
GUID_WICPixelFormat80bpp5Channels 5 16 80 UINT
GUID_WICPixelFormat48bpp5ChannelsAlpha 6 8 48 UINT
GUID_WICPixelFormat96bpp5ChannelsAlpha 6 16 96 UINT
GUID_WICPixelFormat48bpp6Channels 6 8 48 UINT
GUID_WICPixelFormat96bpp6Channels 6 16 96 UINT
GUID_WICPixelFormat56bpp6ChannelsAlpha 7 8 56 UINT
GUID_WICPixelFormat112bpp6ChannelsAlpha 7 16 112 UINT
GUID_WICPixelFormat56bpp7Channels 7 8 56 UINT
GUID_WICPixelFormat112bpp7Channels 7 16 112 UINT
GUID_WICPixelFormat64bpp7ChannelsAlpha 8 8 64 UINT
GUID_WICPixelFormat128bpp7ChannelsAlpha 8 16 128 UINT
GUID_WICPixelFormat64bpp8Channels 8 8 64 UINT
GUID_WICPixelFormat128bpp8Channels 8 16 128 UINT
GUID_WICPixelFormat72bpp8ChannelsAlpha 9 8 72 UINT
GUID_WICPixelFormat144bpp8ChannelsAlpha 9 16 144 UINT

Reine Alpha-Pixelformate

In der folgenden Tabelle sind die reinen Alphaformate aufgeführt, die von WIC bereitgestellt werden. Dieses Format enthält nur Alphainformationen.

Anzeigename Kanalanzahl Bits pro Kanal Bits pro Pixel Speichertyp
GUID_WICPixelFormat8bppAlpha 1 8 32 UINT

YCbCr-Pixelformate

In der folgenden Tabelle sind die YCbCr-Formate aufgeführt, die von WIC bereitgestellt werden. Diese Formate trennen die Primärfarbdaten in Luma (Y), blauen Farbunterschied (Cb) und roten Farbunterschied (Cr). Beachten Sie, dass diese Formate so konzipiert sind, dass YCbCr-Pixeldaten für JPEG und JFIF gespeichert werden.

Anzeigename Kanalanzahl Bits pro Pixel Speichertyp
GUID_WICPixelFormat8bppY 1 8 UINT
GUID_WICPixelFormat8bppCb 1 8 UINT
GUID_WICPixelFormat8bppCr 1 8 UINT
GUID_WICPixelFormat16bppCbCr 2 16 UINT

Farbraum

Pixelformate selbst verfügen nicht über einen Farbraum. Im Allgemeinen ist ein Farbraum eine semantische Interpretation der Pixelwerte, die vom Kontext des Bitmusters abhängig sind. Einige Bilder identifizieren einen Farbkontext, der den Farbraum des Bilds definiert. Nur wenn kein Farbkontext vorhanden ist, sollte der Farbraum abgeleitet werden.

Farbkontextinformationen werden von der IWICColorContext-Schnittstelle für WIC definiert. Verwenden Sie die Methode GetColorContext, um die Farbkontextinformationen für einen Bildframe abzurufen.

Ohne Farbrauminformationen für ein Bild ist die allgemeine Regel für die Farbraumableitung, dass UINT RGB- und Graustufenformate den RGB-Standardfarbraum (sRGB) verwenden, während Festkomma- und Gleitkomma-RGB- und Graustufenformate den erweiterten RGB-Farbraum (scRGB) nutzen. Das CMYK-Farbmodell verwendet einen RWOP-Farbraum.

Native Bildformate

Jeder der von Windows bereitgestellten WIC-Codecs unterstützt eine Teilmenge der WIC-Pixelformate. Für jeden Codec können sich die unterstützten Decodierungsformate von den unterstützten Codierungsformaten unterscheiden.

Beim Decodieren eines Bilds werden Daten, die nativ in einem Pixelformat gespeichert sind, das vom Decoder nicht unterstützt wird, in ein unterstütztes Format konvertiert. Um das Pixelformat der Ausgabe festzustellen, rufen Sie IWICBitmapFrameDecode::GetPixelFormat ab.

Verwenden Sie beim Codieren eines Bilds IWICBitmapFrameEncode::SetPixelFormat, um anzufordern, dass der Encoder ein bestimmtes Pixelformat verwendet. Der Encoder gibt das geeignetste unterstützte Pixelformat zurück, das sich vom angeforderten Format unterscheiden kann.

In den folgenden Tabellen sind die Pixelformate aufgeführt, die von den von Windows bereitgestellten WIC-Codecs unterstützt werden.

BMP-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat1bppIndexed GUID_WICPixelFormat1bppIndexed
GUID_WICPixelFormat4bppIndexed GUID_WICPixelFormat4bppIndexed
GUID_WICPixelFormat8bppIndexed GUID_WICPixelFormat8bppIndexed
GUID_WICPixelFormat16bppBGR555 GUID_WICPixelFormat16bppBGR555
GUID_WICPixelFormat16bppBGR565 GUID_WICPixelFormat16bppBGR565
GUID_WICPixelFormat24bppBGR GUID_WICPixelFormat24bppBGR
GUID_WICPixelFormat32bppBGR GUID_WICPixelFormat32bppBGR
GUID_WICPixelFormat32bppBGRA* GUID_WICPixelFormat32bppBGRA*
GUID_WICPixelFormat64bppRGBAFixedPoint GUID_WICPixelFormat32bppPBGRA
GUID_WICPixelFormat64bppRGBAFixedPoint
GUID_WICPixelFormat64bppBGRAFixedPoint

Hinweis

GUID_WICPixelFormat32bppBGRA wird in Windows 8 und im Plattformupdate für Windows 7 und höher unterstützt.

  • Um dieses Format zu codieren, verwenden Sie die Encoder-Option EnableV5Header32bppBGRA. Die BMP-Datei wird mit einer BITMAPV5HEADER-Kopfzeile geschrieben.
  • Wenn eine Datei über eine BITMAPV5HEADER-Kopfzeile verfügt, wird sie als GUID_WICPixelFormat32bppBGRA decodiert.

GIF-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat8bppIndexed GUID_WICPixelFormat8bppIndexed

ICO-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat32bppBGRA

JPEG-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat8bppGray GUID_WICPixelFormat8bppGray
GUID_WICPixelFormat24bppBGR GUID_WICPixelFormat24bppBGR
GUID_WICPixelFormat32bppCMYK GUID_WICPixelFormat32bppCMYK

PNG-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat1bppIndexed GUID_WICPixelFormat1bppIndexed
GUID_WICPixelFormat2bppIndexed GUID_WICPixelFormat2bppIndexed
GUID_WICPixelFormat4bppIndexed GUID_WICPixelFormat4bppIndexed
GUID_WICPixelFormat8bppIndexed GUID_WICPixelFormat8bppIndexed
GUID_WICPixelFormatBlackWhite GUID_WICPixelFormatBlackWhite
GUID_WICPixelFormat2bppGray GUID_WICPixelFormat2bppGray
GUID_WICPixelFormat4bppGray GUID_WICPixelFormat4bppGray
GUID_WICPixelFormat8bppGray GUID_WICPixelFormat8bppGray
GUID_WICPixelFormat16bppGray GUID_WICPixelFormat16bppGray
GUID_WICPixelFormat24bppBGR GUID_WICPixelFormat24bppBGR
GUID_WICPixelFormat32bppBGRA GUID_WICPixelFormat32bppBGRA
GUID_WICPixelFormat48bppRGB GUID_WICPixelFormat48bppRGB
GUID_WICPixelFormat64bppRGBA GUID_WICPixelFormat48bppBGR
GUID_WICPixelFormat64bppRGBA
GUID_WICPixelFormat64bppBGRA

TIFF-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat1bppIndexed GUID_WICPixelFormat1bppIndexed
GUID_WICPixelFormat4bppIndexed GUID_WICPixelFormat4bppIndexed
GUID_WICPixelFormat8bppIndexed GUID_WICPixelFormat8bppIndexed
GUID_WICPixelFormatBlackWhite GUID_WICPixelFormatBlackWhite
GUID_WICPixelFormat4bppGray GUID_WICPixelFormat4bppGray
GUID_WICPixelFormat8bppGray GUID_WICPixelFormat8bppGray
GUID_WICPixelFormat16bppGray GUID_WICPixelFormat16bppGray
GUID_WICPixelFormat32bppGrayFloat GUID_WICPixelFormat24bppBGR
GUID_WICPixelFormat24bppBGR GUID_WICPixelFormat32bppBGRA
GUID_WICPixelFormat32bppBGRA GUID_WICPixelFormat32bppCMYK
GUID_WICPixelFormat32bppPBGRA GUID_WICPixelFormat48bppRGB
GUID_WICPixelFormat48bppRGB GUID_WICPixelFormat64bppRGBA
GUID_WICPixelFormat32bppCMYK
GUID_WICPixelFormat40bppCMYKAlpha
GUID_WICPixelFormat64bppRGBA
GUID_WICPixelFormat64bppPRGBA
GUID_WICPixelFormat64bppCMYK
GUID_WICPixelFormat80bppCMYKAlpha
GUID_WICPixelFormat96bppRGBFloat*
GUID_WICPixelFormat128bppRGBAFloat
GUID_WICPixelFormat128bppPRGBAFloat

Hinweis

GUID_WICPixelFormat96bppRGBFloat wird nur unter Windows 8, dem Plattformupdate für Windows 7 und höher unterstützt.

GIF-nativer Codec

Nur Tiefen- und Verstärkungsformate. Diese Pixelformat-GUIDs ermöglichen Fotoanzeigen das Abrufen alternativer Darstellungen eines HEIF-Bilds.

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat8bppDepth GUID_WICPixelFormat8bppDepth
GUID_WICPixelFormat8bppGain GUID_WICPixelFormat8bppGain

JPEG-XR-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormatBlackWhite GUID_WICPixelFormatBlackWhite
GUID_WICPixelFormat8bppGray GUID_WICPixelFormat8bppGray
GUID_WICPixelFormat16bppBGR555 GUID_WICPixelFormat16bppBGR555
GUID_WICPixelFormat16bppGray GUID_WICPixelFormat16bppGray
GUID_WICPixelFormat24bppBGR GUID_WICPixelFormat24bppBGR
GUID_WICPixelFormat24bppRGB GUID_WICPixelFormat24bppRGB
GUID_WICPixelFormat32bppBGR GUID_WICPixelFormat32bppBGR
GUID_WICPixelFormat32bppBGRA GUID_WICPixelFormat32bppBGRA
GUID_WICPixelFormat48bppRGBFixedPoint GUID_WICPixelFormat48bppRGBFixedPoint
GUID_WICPixelFormat16bppGrayFixedPoint GUID_WICPixelFormat16bppGrayFixedPoint
GUID_WICPixelFormat32bppBGR101010 GUID_WICPixelFormat32bppBGR101010
GUID_WICPixelFormat48bppRGB GUID_WICPixelFormat48bppRGB
GUID_WICPixelFormat64bppRGBA GUID_WICPixelFormat64bppRGBA
GUID_WICPixelFormat96bppRGBFixedPoint GUID_WICPixelFormat96bppRGBFixedPoint
GUID_WICPixelFormat96bppRGBFixedPoint GUID_WICPixelFormat128bppRGBAFloat
GUID_WICPixelFormat128bppRGBFloat GUID_WICPixelFormat128bppRGBFloat
GUID_WICPixelFormat32bppCMYK GUID_WICPixelFormat32bppCMYK
GUID_WICPixelFormat64bppRGBAFixedPoint GUID_WICPixelFormat64bppRGBAFixedPoint
GUID_WICPixelFormat128bppRGBAFixedPoint GUID_WICPixelFormat128bppRGBAFixedPoint
GUID_WICPixelFormat64bppCMYK GUID_WICPixelFormat64bppCMYK
GUID_WICPixelFormat24bpp3Channels GUID_WICPixelFormat24bpp3Channels
GUID_WICPixelFormat32bpp4Channels GUID_WICPixelFormat32bpp4Channels
GUID_WICPixelFormat40bpp5Channels GUID_WICPixelFormat40bpp5Channels
GUID_WICPixelFormat48bpp6Channels GUID_WICPixelFormat48bpp6Channels
GUID_WICPixelFormat56bpp7Channels GUID_WICPixelFormat56bpp7Channels
GUID_WICPixelFormat64bpp8Channels GUID_WICPixelFormat64bpp8Channels
GUID_WICPixelFormat48bpp3Channels GUID_WICPixelFormat48bpp3Channels
GUID_WICPixelFormat64bpp4Channels GUID_WICPixelFormat64bpp4Channels
GUID_WICPixelFormat80bpp5Channels GUID_WICPixelFormat80bpp5Channels
GUID_WICPixelFormat96bpp6Channels GUID_WICPixelFormat96bpp6Channels
GUID_WICPixelFormat112bpp7Channels GUID_WICPixelFormat112bpp7Channels
GUID_WICPixelFormat128bpp8Channels GUID_WICPixelFormat128bpp8Channels
GUID_WICPixelFormat40bppCMYKAlpha GUID_WICPixelFormat40bppCMYKAlpha
GUID_WICPixelFormat80bppCMYKAlpha GUID_WICPixelFormat80bppCMYKAlpha
GUID_WICPixelFormat32bpp3ChannelsAlpha GUID_WICPixelFormat32bpp3ChannelsAlpha
GUID_WICPixelFormat64bpp7ChannelsAlpha GUID_WICPixelFormat40bpp4ChannelsAlpha
GUID_WICPixelFormat72bpp8ChannelsAlpha GUID_WICPixelFormat48bpp5ChannelsAlpha
GUID_WICPixelFormat64bpp3ChannelsAlpha GUID_WICPixelFormat56bpp6ChannelsAlpha
GUID_WICPixelFormat80bpp4ChannelsAlpha GUID_WICPixelFormat64bpp7ChannelsAlpha
GUID_WICPixelFormat96bpp5ChannelsAlpha GUID_WICPixelFormat72bpp8ChannelsAlpha
GUID_WICPixelFormat112bpp6ChannelsAlpha GUID_WICPixelFormat64bpp3ChannelsAlpha
GUID_WICPixelFormat128bpp7ChannelsAlpha GUID_WICPixelFormat80bpp4ChannelsAlpha
GUID_WICPixelFormat144bpp8ChannelsAlpha GUID_WICPixelFormat96bpp5ChannelsAlpha
GUID_WICPixelFormat64bppRGBAHalf GUID_WICPixelFormat112bpp6ChannelsAlpha
GUID_WICPixelFormat48bppRGBHalf GUID_WICPixelFormat128bpp7ChannelsAlpha
GUID_WICPixelFormat32bppRGBE GUID_WICPixelFormat144bpp8ChannelsAlpha
GUID_WICPixelFormat16bppGrayHalf GUID_WICPixelFormat64bppRGBAHalf
GUID_WICPixelFormat32bppGrayFixedPoint GUID_WICPixelFormat48bppRGBHalf
GUID_WICPixelFormat64bppRGBFixedPoint GUID_WICPixelFormat32bppRGBE
GUID_WICPixelFormat128bppRGBFixedPoint GUID_WICPixelFormat16bppGrayHalf
GUID_WICPixelFormat64bppRGBHalf GUID_WICPixelFormatBlackWhite

DDS-nativer Codec

Decoder-Pixelformate Encoder-Pixelformate
GUID_WICPixelFormat32bppBGRA GUID_WICPixelFormat32bppBGRA
GUID_WICPixelFormat32bppPBGRA GUID_WICPixelFormat32bppPBGRA

Hinweis

Der von Windows bereitgestellte DDS-Codec unterstützt DDS-Dateien, die mit den folgenden DXGI_FORMAT-Werten codiert wurden:

  • DXGI_FORMAT_BC1_UNORM
  • DXGI_FORMAT_BC2_UNORM
  • DXGI_FORMAT_BC3_UNORM

Diese werden als GUID_WICPixelFormat32bppBGRA oder GUID_WICPixelFormat32bppPBGRA decodiert und codiert. Weitere Informationen finden Sie in der Übersicht über das DDS-Format.

Erweiterbarkeit des Pixelformats

Benutzerdefinierte Bildformate können Pixelformate verwenden, die nicht nativ von WIC bereitgestellt werden, z. B. YCbCr (YUV) und YCCK (Y/Cb/Cr/K). WIC bietet ein Erweiterbarkeitsmodell, mit dem sowohl integrierte als auch Add-In-Pixelformate innerhalb derselben Imageerstellungspipeline verwendet werden können. Um diese Pixelformate mit der WIC-Imageerstellungspipeline zu integrieren, müssen Sie Pixelformatkonverter erstellen, um Add-In-Pixelformate in ein oder mehrere der nativen Pixelformate zu konvertieren. Die Standardschnittstelle zum Erstellen von Formatkonvertern ist IWICFormatConverter.

Konzept

Übersicht über die Windows-Bilderstellungskomponente

WIC-GUIDs und CLSIDs

Weitere Ressourcen

Schreiben eines WIC-fähigen Codec

Übersicht über das HD-Fotoformat