Espace colorimétrique sRGB 2.2 display

Affichez une couleur, une palette, un dégradé ou une image dans tous les espaces colorimétriques. Des écrans à l’impression, des sélecteurs de couleur à la recherche, de 1860 à 2026.

Utilisation

JavaScript

Toute la bibliothèque : 221 espaces, 71 ko avec gzip – de n’importe quel espace vers n’importe quel autre, dans les deux sens.

npm install color-space
import space from 'color-space'

space.rgb.oklch(255, 128, 0)      // → [0.732, 0.186, 53]
space.oklch.rgb(0.65, 0.1, 180)   // → [56.14, 162.97, 145.41]
space.oklch.range                 // [[0,1], [0,0.4], [0,360]]

Ou un seul espace – le bundle ne contient rien d’autre.

import oklch from 'color-space/oklch.js'

oklch.rgb(0.65, 0.1, 180)   // → [56.14, 162.97, 145.41]

Typé : les déclarations TypeScript sont livrées avec le paquet, pour toute la bibliothèque et pour chaque espace seul.

Qu’est-ce qu’un espace colorimétrique ?

Un système de coordonnées pour la couleur : des axes, des plages et une règle reliant les nombres à une lumière mesurable. La vision humaine est trichromatique, avec trois types de cônes (S, M, L) : il faut donc au moins trois coordonnées pour décrire toute couleur que l’œil peut voir. Le même orange s’écrit rgb(255 128 0), oklch(0.732 0.186 53) et XYZ [49, 36.7, 4.5]. Une palette est une poignée de couleurs choisies ; un espace permet d’écrire n’importe quelle couleur.

Modèle de couleur ou espace colorimétrique : quelle différence ?

Un modèle de couleur définit les composantes utilisées pour décrire une couleur : trois primaires pour RGB, teinte, saturation et clarté pour HSL, quatre encres pour CMYK. Un espace colorimétrique précise les primaires, le point blanc et la courbe de codage. Chaque ensemble de valeurs correspond alors à une couleur mesurable. Ainsi, rgb(255 0 0) désigne des rouges différents en sRGB, Display P3 et Adobe RGB : un modèle, trois espaces.

Dans l’usage courant, les deux sont appelés espaces, y compris dans color-mix(in hsl, …) en CSS et dans ce catalogue. Un modèle peut prendre un espace existant comme référence : ici, HSL et HSV sont définis à partir de sRGB, comme en CSS.

Quel espace utiliser, concrètement ?

Tout dépend de la tâche :

  • stocker et partager des images : sRGB, le standard du web ;
  • concevoir des palettes et des dégradés : OKLCH, perceptuellement uniforme ;
  • faire des calculs sur la lumière (mélange, flou, 3D) : RGB en lumière linéaire ;
  • tourner et étalonner de la vidéo : l’espace log de votre caméra, puis une livraison en Rec. 709 ou en Rec. 2100 ;
  • mesurer l’écart perçu entre deux couleurs : CIELAB ou DIN99o.

Pour voir tous les espaces classés par tâche, regroupez le catalogue par usage.

Que choisir à la place de HSL ?

OKLCH. Il garde les trois mêmes réglages – teinte, chroma, clarté –, mais sa clarté est fiable : en HSL, le jaune à L=50 émet environ 13 fois plus de lumière que le bleu à L=50 ; un même L ne veut donc pas dire une même luminosité. En OKLCH, si. CSS prend en charge oklch() en natif.

Comment convertir une couleur hex en OKLCH ?

Saisissez-la ou collez-la dans le champ de couleur en haut, par exemple #ff8000. Chaque espace de la page affiche aussitôt cette couleur ; en OKLCH, elle vaut 0.732, 0.186, 53, soit oklch(0.732 0.186 53) en CSS. L’onglet css de chaque fiche donne la forme à copier, et en code c’est space.rgb.oklch(255, 128, 0).

Pourquoi les couleurs du dégradé sont-elles ternes au milieu ?

Parce qu’ils sont calculés en sRGB encodé en gamma, où moyenner les nombres de deux couleurs donne une lumière plus sombre et plus terne que le mélange réel de leurs lumières. Interpoler en OKLab l’évite ; en CSS, cela s’écrit linear-gradient(in oklab, red, blue). La ligne interpoler de chaque fiche trace le même dégradé dans deux espaces côte à côte : vous voyez la différence avant de choisir.

Comment convertir du S-Log3 ou un autre log de caméra en Rec. 709 ?

Ouvrez l’espace log de votre caméra, comme S-Log3, LogC4 ou Apple Log. Dans son bloc LUT, choisissez Rec. 709 et votre logiciel : DaVinci Resolve, Premiere Pro, Final Cut Pro, OBS, ffmpeg et d’autres. Votre navigateur génère le fichier .cube. C’est une conversion technique, sans mappage tonal : les hautes lumières au-dessus du blanc diffus sont écrêtées, et c’est à vous d’ajouter le look.

Que signifie « hors gamut » ?

Une couleur qu’un espace peut décrire mais qu’un autre – ou votre écran – ne peut pas afficher. Un vert vif de Display P3 n’existe pas en sRGB : convertissez-le, et les nombres sortent de la plage valide. L’atlas le rend visible : un ⚠ près de la couleur courante signale qu’elle sort de la Limite choisie, Alt maintenu au-dessus d’un plan ou d’une bande indique le gamut plus large qu’exige une couleur à cet endroit (P3, Rec. 2020), et les tronçons hors plage apparaissent en transparence sur un damier.

Pourquoi l’impression paraît-elle plus terne que l’écran ?

Un écran émet de la lumière ; le papier réfléchit ce que ses encres n’absorbent pas. L’encre sur papier reproduit moins de couleurs vives – les bleus, verts et rouges RGB saturés lui échappent –, d’où une impression plus terne. Le prépresse convertit via un profil ICC établi pour la presse et le papier, comme FOGRA39 pour le couché européen ou GRACoL aux États-Unis. Le CMYK de ce catalogue est la formule simple qu’utilise CSS pour device-cmyk() sans profil : les valeurs sont exactes, mais ce n’est pas une épreuve de l’impression.

Dans quel espace colorimétrique exporter mes photos ?

Pour le web et le partage, sRGB : navigateurs et téléphones l’appliquent par défaut quand un fichier n’embarque aucun profil. Display P3 restitue mieux les couleurs vives d’une scène sur les écrans Apple et sur de nombreux écrans Android, tant que le profil reste incorporé. Envoyez vos fichiers en Adobe RGB quand un laboratoire d’impression le demande. Réservez ProPhoto RGB à la retouche en 16 bits : son gamut est si large qu’en 8 bits les dégradés se postérisent.

Les conversions sont-elles exactes ? Les allers-retours perdent-ils des données ?

Les conversions sont des formules analytiques, pas des approximations par table, et les allers-retours reviennent au point de départ au bruit du calcul flottant près. Les rares exceptions sont documentées là où elles surviennent : OSA-UCS n’a pas d’inverse analytique, et les systèmes d’atlas comme Munsell interpolent entre les échelons publiés. La sortie en rgb n’est jamais bornée : une couleur hors de sRGB revient sous 0 ou au-delà de 255, ne la bornez donc qu’à l’affichage.

Elles sont aussi vérifiées : chaque espace renvoie à l’article ou à la spécification qu’il implémente, les valeurs sont comparées à celles de colorjs.io partout où les deux se recoupent, et les logs de caméra aux transformations ACES officielles de l’Academy. formula-verification.md indique ce qui a été vérifié et par rapport à quoi, y compris quelques endroits où les articles publiés comportaient eux-mêmes des erreurs.

Si les nombres diffèrent de ceux d’une autre bibliothèque, comparez les plages : celle-ci garde les plages usuelles de chaque espace – RGB 0–255, clarté Lab 0–100, teinte 0–360 – là où beaucoup ramènent tout à 0–1. Chaque carte affiche ses plages ; dans le code, c’est space.oklch.range.

Lesquels peut-on écrire en CSS ?

En natif : rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch(), plus color() pour Display P3, Adobe RGB, ProPhoto, sRGB linéaire et XYZ (D65 et D50). Le rec2020 de CSS est un gamma 2.4 pur, pas la courbe BT.2020 du Rec. 2020 de ce catalogue : les mêmes nombres y désigneraient une autre couleur. L’onglet css de chaque fiche donne la couleur courante sous une forme prête à copier ; les espaces absents de CSS sont fournis à la place en profils ICC ou en LUT.

À quoi ressemblent les couleurs pour les daltoniens ?

Ouvrez Vue et choisissez une option sous Vision : aveugle au rouge (protanopie), aveugle au vert (deutéranopie) ou aveugle au bleu (tritanopie). Le catalogue se redessine tel que cet œil le voit, ce qui permet de vérifier que les couleurs d’une palette restent distinctes. Environ 1 homme sur 12 présente un trouble de la vision des couleurs, d’après les chiffres du NEI.

Où sont Pantone, NCS, RAL ?

Ce sont des produits sous licence : leurs couleurs sont définies par des données que leurs propriétaires vendent, non par des formules publiées. Il n’y a donc aucune formule publique à implémenter, et redistribuer leurs tables serait illégal. Des systèmes voisins, dont les formules sont publiques, figurent ici : Munsell (sa renotation de 1943 a été publiée) et RAL Design (défini directement en CIELAB). Tout système dont les formules ont été publiées a sa place ici ; proposez-en un qui manque.

Alternatives

Comparatif des bibliothèques de conversion de couleurs.
OutilEspacesLogs de caméraLuma–chromasRGBUtilitairesTailleVitesseCibles
color-space20531160–255
parse mix ΔE contrast CVD
62 kBJS, WASM, GL, LUT, ICC, OCIO, MCP, Figma, VS Code, CLI, web
culori30–10–1
parse mix gamut ΔE contrast CVD
23 kBJS
colorjs.io51––0–1
parse mix gamut ΔE contrast
34 kBJS, web
chroma-js11––0–255
parse mix ΔE contrast palettes
17 kBJS
@texel/color16––0–1
parse gamut ΔE
9 kBJS
colour-science1282460–1
ΔE CVD
––Python, LUT
ColorAide77––0–1
parse mix gamut ΔE contrast CVD palettes
––Python
colorspace (R)9––0–1
mix contrast CVD palettes
––R, web
OpenColorIO5711–0–1
gamut
––C++, Python, GL, LUT, ICC
Bruce Lindbloom22––0–1, 0–255
ΔE
––web
oklch.com9––0–255
parse gamut
––web

D’après le code source, le paquet ou la page de chaque projet, au 2026-10-18.

Copié