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