Dans la suite de l'article, nous ne nous intéresserons qu'aux 24 bits de codage des couleurs. Les explications données correspondront donc non seulement à la représentation des couleurs sur 32 bits mais aussi à celle sur 24 bits.
Les 24 bits d'une couleur se décomposent en 3 fois 8 bits :
- 8 bits sont consacrés à la teinte primaire rouge ;
- 8 bits sont consacrés à la teinte primaire vert ;
- 8 bits sont consacrés à la teinte primaire bleu.
Une séquence de 8 bits permet de coder un nombre entier compris entre 0 et Vmax = 255 : en effet, 2 vaut 256. Par conséquent, la valeur de la composante rouge d'un pixel peut être représentée selon 256 niveaux différents (allant du 0, absence de rouge, à 255, rouge d'intensité maximum). Et il en est de même pour les 2 autres composantes primaires, le vert et le bleu.
Donnons un exemple :
Le carré ci-contre est formé de pixels d'une couleur uniforme dont les caractéristiques RVB sont les suivantes :
- composante rouge : 251, soit en codage binaire (sur 8 bits) 11111011 ;
- composante verte : 208, soit 11010000 ;
- composante bleue : 151, soit 10010111.
Le codage binaire sur 24 bits de cette couleur est donc le suivant :
111110111101000010010111.
Or il existe deux grandes familles de représentation des couleurs, telles qu'elles peuvent apparaître dans une image présentée sur un écran d'ordinateur : le codage RVB (ou RGB en anglais), dont les principes viennent d'être décrits, et le codage TSL (ou HSL en anglais).
Voyons donc à présent quelles sont les valeurs des 3 composantes du codage TSL de la couleur choisie précédemment, exprimées (comme c'est assez souvent le cas) selon une échelle allant de 0 à 240 :
- composante Teinte : 23 ;
- composante Saturation : 222 ;
- composante Luminance : 189.
Ici, on se rapportera utilement aux explications fournies dans l'article Teinte saturation lumière, dans lequel d'autres valeurs maximales sont choisies pour la teinte (de 0 à 360 °), la saturation (de 0 à 100 ) et la luminance (de 0 à 100 %).
Le codage RVB est celui qui est mis en œuvre dans de nombreux périphériques numériques : en entrée (scanner-couleurs, appareil photo numérique, caméscope…) comme en sortie (écran en couleurs, imprimante, quadrichromie, photocopieuse-couleurs…).
Le codage TSL, destiné aux opérateurs humains, est adapté à la caractéristique de leurs rétines : une personne entraînée peut d'ailleurs donner avec une approximation satisfaisante les valeurs TSL d'une couleur qu'on lui présente (la plus difficile à retrouver étant réputée être le marron); elle peut aussi, même si elle est novice, trouver assez rapidement, en s'aidant par exemple des outils de Sélection de couleur offerts dans de nombreux logiciels de dessin ou de retouche, les composantes TSL d'une couleur qu'elle n'a pas sous les yeux mais qu'elle imagine ; enfin, le langage TSL de définition des couleurs permet de définir facilement certains des dégradés de teinte que la représentation RVB ne permet pas de définir aussi facilement. En revanche, la très grande majorité des langages de développement exige d'utiliser le codage RVB pour la définition de la couleur d'un tracé, d'un fond de fenêtre, d'un texte, etc. ; c'est pourquoi il peut être utile de disposer de moyens permettant de passer d'un codage TSL à un codage RVB, et réciproquement.
La notion de couleur est parfois généralisée en ajoutant un indice de transparence appelé Alpha. Voir RGBA.
Avant de présenter ces moyens, nous allons d'abord présenter et commenter un outil de sélection de couleurs, ainsi que des exemples de dégradé entre 2 teintes.