Vue d’ensemble des formats de pixel natifs

Cette rubrique présente les formats de pixels fournis par le Composant Imagerie Windows (WIC).

Un format de pixels décrit la disposition de la mémoire de chaque pixel dans une bitmap. Cette disposition de mémoire décrit comment les données d’image d’une bitmap sont encodées en spécifiant le format numérique et l’organisation de canal de couleur. WIC prend en charge plusieurs formats numériques pour plusieurs schémas d’organisation de canal de couleur, fournissant un large éventail de formats de pixels.

Profondeur de bits

La profondeur de couleurs est le nombre de bits utilisés pour encoder chaque canal de couleur. Aujourd’hui, la plupart des images numériques utilisent une profondeur de couleurs de 8, ce qui signifie que chaque canal de couleur d’un pixel est représenté par 8 bits, fournissant 2⁸ (256) valeurs uniques par canal. Une image qui a une profondeur de couleurs de 8 et trois canaux de couleur (tels que rouge, vert et bleu) utilise 24 bits par pixel (bpp), qui fournit 2²⁴ (16 777 216) couleurs différentes par pixel.

Pour une meilleure résolution de couleur, une profondeur de couleurs de 16 ou 32 peut être utilisée. Cela fournit à chaque canal de couleur 2¹⁶ (65 536) ou 2³² valeurs uniques, au coût de plus de mémoire par pixel.

Dans certains formats, la profondeur de couleurs n’est pas un multiple de 8. Ces formats sont appelés formats empaquetés, car les canaux de couleur d’un pixel ne sont pas alignés sur les limites d’octets. Par exemple, si les profondeurs de couleurs est de 5, trois canaux de couleur peuvent être stockés en 16 bits (y compris 1 bit de remplissage, pour aligner les pixels sur les octets). Les formats empaquetés sont utiles en cas de limitation de la mémoire ou de la puissance de traitement.

Encodage numérique

Pour la majorité des images numériques actuelles, les octets non signés et les entiers courts non signés sont utilisés pour décrire la plage numérique de chaque canal de couleur. La valeur minimale (0) représente une intensité nulle dans un canal de couleur unique, et le noir est obtenu lorsque tous les canaux de couleur sont nuls. De même, la valeur maximale représente l’intensité totale et le blanc est obtenu lorsque tous les canaux de couleur sont à pleine intensité. À une profondeur de couleurs de 8, UINT fournit 256 valeurs uniques par canal de couleur (de 0 à 255). Un UINT 16 bits fournit 65 536 valeurs uniques par canal de couleur (de 0 à 65 535).

En outre, WIC prend en charge les formats à virgule fixe et à virgule flottante. Ces formats prennent en charge de plus grandes plages dynamiques, car la plage numérique entière de chaque canal de couleur est supérieure à la plage visible. Par conséquent, les couleurs peuvent être ajustées au-dessus ou en dessous de la plage visible, pendant les étapes intermédiaires du traitement de l’image, sans perte d’informations sur l’image.

Encodage numérique à virgule fixe

Les valeurs à virgule fixe 16 bits sont interprétées comme s2.13 : bit de signe, deux bits entiers et treize bits fractionnaires. À l’aide de cette interprétation, une plage numérique de −4,0 à +3,999... peut être représentée, avec la valeur 1,0 représentée par la valeur entière signée 8 192 (0x2 000).

Les valeurs à virgule fixe 32 bits sont interprétées comme s7.24 : bit de signe, sept bits entiers et vingt-quatre bits fractionnaires. À l’aide de cette interprétation, une plage numérique de −128,0 à +127,999... peut être représentée, avec la valeur 1,0 représentée par la valeur entière signée 16 777 216 (0x01 000 000).

Canaux de couleur

Les canaux de couleur d’un format de pixels définissent la disposition mémoire de chaque couleur dans les données d’image d’une bitmap. Il existe une variété de différentes structures de canaux de couleur courantes dans les images numériques d’aujourd’hui et WIC permet la prise en charge de beaucoup de ces structures.

Modèle de couleurs RVB/BVR

Les formats RVB et BVR décrivent les couleurs dans un modèle de couleur additif. La méthode la plus courante de description d’une image est avec trois canaux de couleurs distincts représentant les couleurs rouge (R), vert (V) et bleu (B). WIC prend en charge ces trois canaux dans l’ordre rouge-vert-bleu (RVB) ou bleu-vert-rouge (BVR). Il s’agit de l’ordre dans lequel chaque canal de couleur apparaît dans le flux de bits séquentiel. Par exemple, au format GUID_WICPixelFormat32bppRGB, chaque pixel a une largeur de 32 bits. Le canal rouge est le premier octet (le moins significatif) en mémoire, suivi du vert, puis du bleu. À l’inverse, au format GUID_WICPixelFormat32bppBGR, les canaux de couleur sont dans l’ordre opposé. WIC prend en charge un certain nombre de formats RVB/BVR, notamment des formats de bits empaquetés spéciaux tels que GUID_WICPixelFormat16bppBGR555.

Remarque

Les canaux de couleur des formats de bits BVR empaquetés spéciaux ne sont pas des multiples de 8 comme les canaux de couleur dans les formats de pixels typiques. Cela signifie que les valeurs de canal ne sont pas alignées sur les octets. Les précautions doivent être prises lors de la lecture de canaux de couleur de bits empaquetés.

Outre les formats RVB et BVR, WIC fournit également des formats de pixels RVB et BVR qui prennent en charge un canal alpha (A). Le canal alpha fournit des données d’opacité du pixel. Pour les formats avec un canal alpha ajouté, le canal alpha est généralement disponible en dernier dans l’ordre du canal de couleur. Par exemple, au format pixel GUID_WICPixelFormat32bppBGRA, l’ordre d’octets est bleu, vert et rouge, suivi du canal alpha.

WIC prend également en charge les formats de pixels RVB alpha prédéfinis (P). Dans un format de pixels RVBA classique, les valeurs de couleur rouge, verte et bleue sont les valeurs de couleur réelles de l’image. Pour créer une image composite au format RVBA standard, la valeur alpha de l’image de premier plan doit être multipliée par chacun des canaux rouge, vert et bleu avant de l’ajouter à la couleur de l’image d’arrière-plan. Dans un format de pixel RVB alpha prédéfini, chaque canal de couleur a déjà été multiplié par la valeur alpha. Cela fournit une méthode plus efficace de composition d’image avec des données de canal alpha. Pour récupérer les valeurs de couleur vraies de chaque canal dans un format de pixels PRVBA/PBVRA, la multiplication du canal alpha doit être inversée et il convient de diviser les valeurs de couleur par la valeur alpha.

Modèle de couleurs CMJN

CMJN est un modèle de couleur soustractif utilisé dans l’impression. Les couleurs produites par un modèle CMJN sont générées par la lumière qui n’est pas absorbé, mais réfléchie. CMJN est un modèle à quatre canaux de cyan (C), magenta (M), jaune (J) et noir (N). Lorsque les quatre canaux de couleur ont tous la valeur maximale, le résultat est noir. Comme les modèles de couleurs RVB/BVR, l’ordre d’octet dans le flux de bits séquentiel est donné par le nom du format de pixel. Par exemple, au format de pixel GUID_WICPixelFormat32bppCMYK, chaque pixel est constitué de 32 bits. Le premier octet contient la valeur cyan, suivie du magenta, du jaune, puis du noir. WIC fournit des formats de pixels pour le modèle CMJN à 32 et 64 bits par pixel (bpp).

Outre le modèle de couleur CMJN standard, WIC fournit également le modèle CMJN avec canal alpha. Cela permet aux images CMJN d’avoir des données de fusion alpha similaires au modèle de couleur RVB/BVR. Le canal alpha se trouve immédiatement après le noir dans le flux de bits séquentiel d’une bitmap.

Modèle de couleurs à n canaux

Pour plus de flexibilité, WIC fournit également des formats de pixels qui n’ont pas d’ordre de canal prédéfini. WIC fournit des formats de pixels qui prennent en charge entre trois et huit canaux de données d’image continue à des profondeurs de couleurs de 8 et 16. Contrairement aux formats de pixel RVB/BVR et CMJN, les formats n-canal ne spécifient pas l’ordre du canal, mais plutôt le nombre de canaux de couleur disponibles. Par exemple, au format de pixels GUID_WICPixelFormat32bpp4Channels, chaque pixel est composé de 32 bits avec chacun des 4 canaux occupant un seul octet.

WIC fournit également des formats de pixels pour n-canal avec canal alpha. Cela permet aux images n-canal d’avoir des données de fusion alpha similaires aux modèles de couleurs RVB/BVR et CMJN. Le canal alpha se trouve immédiatement après le dernier canal de couleur du flux de bits séquentiel d’une bitmap.

Modèles de couleurs indexées et en nuances de gris

Les formats indexés utilisent une table de couleurs, appelée palette. La palette est stockée en externe dans les données de pixels ou définie implicitement. La valeur de chaque pixel de l’image est un index dans la palette. Avec un format indexé, le nombre de bits par pixel est directement lié au nombre d’entrées dans la palette. Cela réduit considérablement la quantité de données requises pour représenter l’image, mais cela limite également le nombre de couleurs disponibles pour l’image. WIC prend en charge les formats indexés avec 1, 2, 4 ou 8 bpp.

Pour les formats monochromes (nuances de gris), WIC prend en charge 1, 2, 4, 8, 16 et 32 bits par pixel. Pour les profondeurs de couleurs de 1, 8, 16 et 32, les données de couleur sont stockées dans un seul canal. Pour les profondeurs de couleurs de 2 ou 4, les pixels sont des index dans une palette de nuances de gris.

Modèle de couleurs Y’CbCr

WIC ajoute la prise en charge du modèle de couleur JPEG JFIF Y’CbCr. Y’CbCr sépare les couleurs en un composant luma (Y’) et deux composants chroma (Cb et Cr). De nombreux fichiers JPEG stockent en mode natif les données d’image à l’aide du modèle de couleur Y’CbCr.

Le système visuel humain est moins sensible aux changements de chroma que de luma, et les formats Y’CbCr peuvent tirer parti de cette sensibilité réduite en réduisant la quantité de données chroma stockées par rapport aux données luma. Cela est possible en séparant les données chroma et luma dans des plans distincts et en mettant à l’échelle chaque plan de composant vers une résolution différente. Cette pratique est appelée sous-échantillonnage de la chrominance.

Étant donné que les données chroma et luma sont stockées séparément et peuvent avoir différentes résolutions, WIC définit des formats de pixels luma et chroma différents. WIC prend en charge les données de 8 bits par canal.

Format de pixel WIC

Les formats de pixels dans WIC sont définis à l’aide de GUID pour éviter tout conflit avec les fabricants de matériel. WIC fournit un nom convivial pour référencer le GUID d’un format de pixel natif. La convention d’affectation de noms pour les formats de pixels WIC est la suivante :

[GUID_WICPixelFormat][Bits par pixel][Ordre du canal][Type de stockage]

Composant de format Description
GUID_WICPixelFormat Identification descriptive de tous les formats de pixels WIC. Le nom convivial de tous les pixels WIC commence par cette chaîne.
Bits par pixel Nombre de bits par pixel (bpp) utilisés pour le format de pixels.
Ordre du canal Modèle de canal de couleur et ordre de chaque canal pour le format.
Type de stockage Encodage numérique utilisé pour le format de pixels. L’encodage par défaut est un entier non signé. Si rien ne suit les informations du modèle de couleur, un entier non signé (UINT) est implicite. Les termes FixedPoint et Float sont utilisés pour identifier les formats de pixels qui utilisent respectivement l’encodage à virgule fixe et à virgule flottante.

Remarque

Pour les formats n-canal, [Ordre du canal] ne spécifie pas l’ordre des couleurs, mais plutôt le nombre de canaux disponibles. Par exemple, GUID_WICPixelFormat24bpp3Channels fournit 3 canaux de couleur où « 3Channels » représente l’entrée [Ordre du canal], mais indique uniquement le nombre de canaux et non l’ordre.

Par exemple, le nom convivial GUID_WICPixelFormat24bppRGB signifie que le format de pixel utilise 24 bits par pixel et le modèle de couleur RVB. Étant donné que le nom n’identifie pas explicitement un type de stockage, un entier non signé est implicite.

WIC prend en charge plusieurs formats de pixels. Les tableaux suivants regroupent des formats de pixels similaires par structure de couleurs tout en fournissant des informations supplémentaires telles que la profondeur de couleurs, les bits par pixel et l’encodage numérique. Chaque tableau contient les informations suivantes :

  • Nom convivial. Nom convivial du format de pixels.
  • Nombre de canaux. Nombre de canaux de couleur.
  • Bits par canal. Nombre de bits par canal (profondeur de couleurs).
  • Bits par pixel. Nombre de bits par pixel, y compris les bits de remplissage.
  • Type de stockage. Encodage numérique des données d’image. Cette valeur peut être un entier non signé (UINT), un nombre à virgule fixe (FixedPoint) ou un nombre à virgule flottante (Float).

Remarque

Pour plus de clarté, ce document fait référence aux formats de pixels uniquement par leurs noms conviviaux. La valeur hexadécimale réelle pour les formats de pixels se trouve dans les fichiers wincodec.h/idl.

Formats de pixel non définis

La liste suivante montre les formats de pixels génériques utilisés lorsque le format de pixels n’est pas défini ou n’est pas important pour une opération d’image.

  • GUID_WICPixelFormatUndefined
  • GUID_WICPixelFormatDontCare

Formats de pixel indexé

Le tableau suivant répertorie les formats de pixels indexés fournis par WIC. Dans ces formats, la valeur de chaque pixel est un index dans une palette de couleurs.

Nom convivial Nombre de canaux Bits par pixel Type de stockage
GUID_WICPixelFormat1bppIndexed 1 1 UINT
GUID_WICPixelFormat2bppIndexed 1 2 UINT
GUID_WICPixelFormat4bppIndexed 1 4 UINT
GUID_WICPixelFormat8bppIndexed 1 8 UINT

Formats de pixel à bits empaquetés

Le tableau suivant répertorie les formats de bits empaquetés fournis par WIC. Dans ces formats, les données de canal de couleur ne sont pas alignées sur les octets.

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
GUID_WICPixelFormat16bppBGR555 3 5 16 UINT
GUID_WICPixelFormat16bppBGR565 3 5(B)/6(V)/5(R) 16 UINT
GUID_WICPixelFormat16bppBGRA555 4 5(B)/5(V)/5(R)/1(A) 16 UINT
GUID_WICPixelFormat32bppBGR101010 3 10 32 UINT
GUID_WICPixelFormat32bppRGBA1010102 4 10(R)/10(V)/10(B)/2(A) 32 UINT
GUID_WICPixelFormat32bppRGBA1010102XR 4 10(R)/10(V)/10(B)/2(A) 32 UINT
GUID_WICPixelFormat32bppR10G10B10A2 4 10(R)/10(V)/10(B)/2(A) 32 UINT
GUID_WICPixelFormat32bppR10G10B10A2HDR10 4 10(R)/10(V)/10(B)/2(A) 32 UINT

Pour les formats GUID_WICPixelFormat32bppBGR101010 et GUID_WICPixelFormat32bppRGBA1010102, le canal rouge est stocké dans les bits les moins significatifs. Pour les formats GUID_WICPixelFormat32bppR10G10B10A2 et GUID_WICPixelFormat32bppR10G10B10A2HDR10, le canal rouge est défini dans les bits les plus significatifs, de la même façon que dans DXGI_FORMAT_R10G10B10A2_UNORM.

Le format GUID_WICPixelFormat32bppR10G10B10A2HDR10 est le format de pixels 10 bits pour HDR10 (espace de couleur BT.2020 et SMPTE ST.2084 EOTF).

Formats de pixel en nuance de gris

Le tableau suivant répertorie les formats de nuances de gris fournis par WIC. Dans ces formats, les données de couleur représentent des nuances de gris.

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
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

Formats de pixels RVB/BVR

Le tableau suivant répertorie les formats RVB/BVR fournis par WIC. Ces formats séparent les données de couleur primaire comme suit : rouge (R), vert (V) et bleu (B). Un canal alpha (A) supplémentaire est fourni pour les informations d’opacité dans certains formats.

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
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 Résolution
GUID_WICPixelFormat48bppBGRFixedPoint 3 16 48 Résolution
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 Résolution
GUID_WICPixelFormat64bppRGBAFixedPoint 4 16 64 Résolution
GUID_WICPixelFormat64bppBGRAFixedPoint 4 16 64 Résolution
GUID_WICPixelFormat64bppRGBHalf 3 16 64 Float
GUID_WICPixelFormat64bppRGBAHalf 4 16 64 Float
GUID_WICPixelFormat96bppRGBFixedPoint 3 32 96 Résolution
GUID_WICPixelFormat128bppRGBFloat 3 32 128 Float
GUID_WICPixelFormat128bppRGBAFloat 4 32 128 Float
GUID_WICPixelFormat128bppPRGBAFloat 4 32 128 Float
GUID_WICPixelFormat128bppRGBFixedPoint 3 32 128 Résolution
GUID_WICPixelFormat128bppRGBAFixedPoint 4 32 128 Résolution

Remarque

*Le format GUID_WICPixelFormat32bppRGBE encode trois valeurs à virgule flottante 16 bits en 4 octets, comme suit : trois mantisses non signées de 8 bits pour les canaux R, V et B, ainsi qu’un exposant 8 bits partagé. Ce format fournit une précision à virgule flottante 16 bits dans une représentation en pixels plus petite.

À compter de Windows 8 et de la Mise à jour de plateforme pour Windows 7, WIC fournit des formats supplémentaires, présentés dans le tableau ci-après.

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
GUID_WICPixelFormat32bppRGB 3 8 32 UINT
GUID_WICPixelFormat64bppRGB 3 16 64 UINT
GUID_WICPixelFormat96bppRGBFloat 3 32 96 FLOAT
GUID_WICPixelFormat64bppPRGBAHalf 4 16 64 FLOAT

Formats de pixel CMJN

Le tableau suivant répertorie les formats CMJN fournis par WIC. Ces formats séparent les données de couleur primaire comme suit : cyan (C), magenta (M), jaune (J) et noir (N).

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
GUID_WICPixelFormat32bppCMYK 4 8 32 UINT
GUID_WICPixelFormat64bppCMYK 4 16 64 UINT
GUID_WICPixelFormat40bppCMYKAlpha 5 8 40 UINT
GUID_WICPixelFormat80bppCMYKAlpha 5 16 80 UINT

Formats de pixel à n canaux

Le tableau suivant répertorie les formats n-canal fournis par WIC. Ces formats fournissent un certain nombre de canaux de couleurs non définis pour stocker les données d’image.

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
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

Formats de pixel Alpha uniquement

Le tableau suivant répertorie les formats Alpha uniquement fournis par WIC. Ce format contient uniquement des informations alpha.

Nom convivial Nombre de canaux Bits par canal Bits par pixel Type de stockage
GUID_WICPixelFormat8bppAlpha 1 8 32 UINT

Formats de pixel Y’CbCr

Le tableau suivant répertorie les formats Y’CbCr fournis par WIC. Ces formats séparent les données de couleur primaires comme suit : luma (Y), différence chroma bleue (Cb) et différence chroma rouge (Cr). Notez que ces formats sont conçus pour stocker les données de pixels JPEG JFIF Y’CbCr.

Nom convivial Nombre de canaux Bits par pixel Type de stockage
GUID_WICPixelFormat8bppY 1 8 UINT
GUID_WICPixelFormat8bppCb 1 8 UINT
GUID_WICPixelFormat8bppCr 1 8 UINT
GUID_WICPixelFormat16bppCbCr 2 16 UINT

Espace de couleurs

Les formats de pixels eux-mêmes n’ont pas d’espace de couleurs. En règle générale, l’espace de couleur est une interprétation sémantique des valeurs de pixels qui dépendent du contexte de la bitmap. Certaines images identifient un contexte de couleur qui définit l’espace de couleurs de l’image. L’espace de couleur doit être déduit uniquement en l’absence de contexte de couleur.

Les informations de contexte de couleur sont définies par l’interface IWICColorContext pour WIC. Pour récupérer les informations de contexte de couleur d’un cadre d’image, utilisez la méthode GetColorContext.

En l’absence d’informations sur l’espace de couleurs d’une image, la règle générale pour l’inférence de l’espace de couleurs est que les formats UINT RVB et nuances de gris utilisent l’espace de couleurs RVB standard (sRGB), tandis que les formats RVB et nuances de gris à virgule fixe et à virgule flottante utilisent l’espace de couleurs RVB étendu (scRGB). Le modèle de couleur CMJN utilise un espace de couleur RWOP.

Formats d’image natifs

Chacun des codecs WIC fournis par Windows prend en charge un sous-ensemble des formats de pixels WIC. Pour chaque codec, les formats de décodage pris en charge peuvent différer des formats d’encodage pris en charge.

Lors du décodage d’une image, si les données sont stockées en mode natif dans un format de pixels qui n’est pas pris en charge par le décodeur, elles seront converties au format pris en charge. Pour déterminer le format de pixels de sortie, appelez IWICBitmapFrameDecode::GetPixelFormat.

Lors de l’encodage d’une image, utilisez IWICBitmapFrameEncode::SetPixelFormat pour demander que l’encodeur utilise un format de pixels spécifique. L’encodeur retourne le format de pixels le plus proche pris en charge, qui peut différer de ce qui a été demandé.

Les tableaux suivants montrent les formats de pixels pris en charge par chacun des codecs WIC fournis par Windows.

Codec natif BMP

Formats de pixel décodeurs Formats de pixel encodeurs
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

Remarque

GUID_WICPixelFormat32bppBGRA est pris en charge dans Windows 8 et dans la Mise à jour de plateforme pour Windows 7 et ultérieur.

  • Pour encoder ce format, utilisez l’option d’encodeur EnableV5Header32bppBGRA. Le BMP est écrit avec un en-tête BITMAPV5HEADER.
  • Si un fichier a un BITMAPV5HEADER, il décode en tant que GUID_WICPixelFormat32bppBGRA.

Codec natif GIF

Formats de pixel décodeurs Formats de pixel encodeurs
GUID_WICPixelFormat8bppIndexed GUID_WICPixelFormat8bppIndexed

Codec natif ICO

Formats de pixel décodeurs Formats de pixel encodeurs
GUID_WICPixelFormat32bppBGRA

Codec natif JPEG

Formats de pixel décodeurs Formats de pixel encodeurs
GUID_WICPixelFormat8bppGray GUID_WICPixelFormat8bppGray
GUID_WICPixelFormat24bppBGR GUID_WICPixelFormat24bppBGR
GUID_WICPixelFormat32bppCMYK GUID_WICPixelFormat32bppCMYK

Codec natif PNG

Formats de pixel décodeurs Formats de pixel encodeurs
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

Codec natif TIFF

Formats de pixel décodeurs Formats de pixel encodeurs
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

Remarque

GUID_WICPixelFormat96bppRGBFloat est pris en charge uniquement dans Windows 8, la Mise à jour de plateforme pour Windows 7 et versions ultérieures.

Codec natif HEIF

Formats uniquement basés sur la profondeur et sur le gain. Ces GUID de formats de pixel permettent aux visionneuses photo d’extraire d’autres représentations d’une image HEIF.

Formats de pixel décodeurs Formats de pixel encodeurs
GUID_WICPixelFormat8bppDepth GUID_WICPixelFormat8bppDepth
GUID_WICPixelFormat8bppGain GUID_WICPixelFormat8bppGain

Codec natif JPEG XR

Formats de pixel décodeurs Formats de pixel encodeurs
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

Codec natif DDS

Formats de pixel décodeurs Formats de pixel encodeurs
GUID_WICPixelFormat32bppBGRA GUID_WICPixelFormat32bppBGRA
GUID_WICPixelFormat32bppPBGRA GUID_WICPixelFormat32bppPBGRA

Remarque

Le codec DDS fourni par Windows prend en charge les fichiers DDS encodés à l’aide des valeurs de DXGI_FORMAT suivantes :

  • DXGI_FORMAT_BC1_UNORM
  • DXGI_FORMAT_BC2_UNORM
  • DXGI_FORMAT_BC3_UNORM

Ces valeurs sont décodées et encodées en tant que GUID_WICPixelFormat32bppBGRA ou GUID_WICPixelFormat32bppPBGRA. Pour plus d’informations, consultez Vue d’ensemble du format DDS.

extensibilité des formats de pixel

Les formats d’image personnalisés peuvent utiliser des formats de pixels qui ne sont pas fournis en mode natif par WIC, tels que YCbCr (YUV) et YCCK (Y/Cb/Cr/K). WIC fournit un modèle d’extensibilité qui permet aux formats de pixels intégrés et complémentaires de fonctionner dans le même pipeline d’imagerie. Pour intégrer ces formats de pixels au pipeline d’imagerie WIC, vous devez créer des convertisseurs de formats de pixels pour convertir les formats de pixels complémentaires en un ou plusieurs des formats de pixels natifs. L’interface principale de création de convertisseurs de formats est IWICFormatConverter.

Conceptuel

Vue d’ensemble du Composant Imagerie Windows

GUID et CLSID WIC

Autres ressources

Comment écrire un codec compatible avec WIC

Vue d’ensemble du format de photo HD