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.