Étant donné une couleur de début et une couleur de fin, est-il possible de générer algorithmiquement une gamme de couleurs entre elles? Par exemple, étant donné les nuances claires et sombres de bleu / gris au début et à la fin de l'image ci-dessous, comment puis-je générer les nuances intermédiaires?
Une solution possible que j'envisage est de créer un dégradé à partir des deux couleurs, puis d'échantillonner la couleur à des points équidistants le long de ce dégradé. Est-ce que ce sera probablement la meilleure approche?
color
color-theory
Ben Packard
la source
la source
Réponses:
C'est ce qu'on appelle l' interpolation des couleurs . C'est ce que font les dégradés sous le capot. Vous pouvez le faire en utilisant une variété de moyens et de méthodes, et la façon exacte dont les résultats sont interpolés dépend de la méthode.
Je le fais couramment pour les projets Web utilisant JavaScript afin de pouvoir changer les couleurs dynamiquement, comme dans ce visualiseur de musique . Une implémentation JavaScript qui a une méthode d'interpolation linéaire très simple utilisant RVB, tirée de l'exemple ci-dessus, est la suivante:
Démo en direct
Qui est utilisé comme tel et retourne un tableau des couleurs interpolées:
Vous pouvez également trouver des extensions PhotoShop (et probablement d'autres programmes) pour effectuer l'interpolation des couleurs. Cependant, vous voudrez peut-être vérifier que la méthode d'interpolation est la même que celle que vous souhaitez, car vous pouvez utiliser n'importe quelle fonction pour interpoler en fonction.
la source
Color Interpolation
était ce dont j'avais besoin. J'ai trouvé quelques implémentations Swift ici - stackoverflow.com/questions/22868182/uico…Jetez un oeil à cette réponse. Comment rendre une couleur donnée un peu plus foncée ou plus claire?
Où vous prenez simplement les valeurs séparées de chaque composant RVB et divisez les valeurs.
Mais nous avons un problème, il n'y a pas qu'une seule façon de faire une transition de couleur.
La première approche vous donnera l'itinéraire le plus court (1) mais cet itinéraire n'est probablement pas ce dont vous avez besoin.
Ceci est également affecté par le modèle de couleur ou la logique. Par exemple, dans le modèle de couleur Lab *, le rouge et le vert sont des couleurs complémentaires, de sorte que l'itinéraire court sur ce modèle passera par un gris neutre (3).
Si vous n'avez besoin que de nuances de couleur, l'autre réponse est appropriée.
la source
Utilisez un mélange dans Illustrator en RVB ou CMJN:
Object → Blend → Blend Options
et saisissez le nombre dontSpecified steps
vous avez besoin entre les deux (20 dans mon exemple ci-dessous)Object → Blend → Make
. Cela générera le mélange que vous pourrez ensuite transformer en objets individuels viaObject → Expand
. Ensuite, vous pouvez voir chaque objet intermédiaire avec son propre code couleur.la source
Ceci est un ajout aux autres réponses.
Lorsque vous interpolez des couleurs en sRGB, vous devez tenir compte du fait que les valeurs RVB ne sont pas linéaires en intensité lumineuse mais linéaires en intensité lumineuse perçue par l'homme. Cela facilite l'enregistrement des valeurs, mais pour diverses opérations de couleur, il est nécessaire d'aller dans l'espace colorimétrique linéaire.
La perception humaine de l'intensité lumineuse est fonction d'une loi de puissance, donc avec
peut être utilisé pour transformer entre les deux. Cela utilise une valeur gamma de 2,2 qui est la valeur pour sRGB. Pour plus d'informations à ce sujet, consultez cet article Wikipedia.
Une analyse détaillée de ce problème et des exemples d'implémentations incorrectes peuvent être trouvés ici . L'un d'eux est un dégradé de couleurs utilisant une interpolation linéaire et sRGB.
la source
Le dégradé de Photoshop (ou de manière équivalente "Blend" en Ai) est déjà présenté comme un moyen d'obtenir une transition de couleur linéaire entre les couleurs de début et de fin. Comment obtenir quelque chose de non linéaire (un chemin de transition courbe) sans programmer du code de script?
Une solution consiste à modifier le chemin de transition du gradient en ajustant les calques ou les modes de fusion ou les deux. Cela produit vraiment une transformation continue de la couleur de début à la couleur de fin, si les calques de modification ont un masque de calque qui est continu et rend l'affection = zéro au début et à la fin.
Voici une tournure assez complexe. Le calque "Cible seule" a le dégradé et le calque "Modificateur" produit un décalage de couleur continu en mélangeant le mode "Couleur" Pour rendre tout sinueux, le modificateur lui-même est un dégradé.
Plus de torsion est générée par un calque de réglage "Courbes" qui ajoute du contraste. Il a le même masque de calque que le Modifier, mais ce n'est pas obligatoire. Tout masque est correct, s'il est continu et noir au début et à la fin.
Il existe des modes de fusion et des courbes discontinues qui provoquent un saut brusque. L'un d'eux est "Hue". Une autre possibilité de gâcher l'effet est "aucun changement", une zone de couleur constante visible causée par l'écrêtage à zéro ou à 255. Je n'ai ni testé ni calculé, combien cela aide en pratique d'utiliser le mode RVB 48 bits / pixel. Peut-être pas du tout, car nous n'avons encore que 24 bits / pixel à l'écran.
la source