Étant donné une valeur RVB, comme 168, 0, 255
, comment créer des teintes (la rendre plus claire) et des nuances (la rendre plus foncée) de la couleur?
Parmi plusieurs options d'ombrage et de teinture:
Pour les nuances, multipliez chaque composant par 1/4, 1/2, 3/4, etc., de sa valeur précédente. Plus le facteur est petit, plus la teinte est foncée.
Pour les teintes, calculez (255 - valeur précédente), multipliez cela par 1/4, 1/2, 3/4, etc. (plus le facteur est élevé, plus la teinte est claire), et ajoutez cela à la valeur précédente (en supposant que chaque .component est un entier de 8 bits).
Notez que les manipulations de couleur (telles que les teintes et autres ombres) doivent être effectuées en RVB linéaire . Cependant, les couleurs RVB spécifiées dans les documents ou encodées dans les images et la vidéo ne sont pas susceptibles d'être en RVB linéaire, auquel cas une fonction dite de transfert inverse doit être appliquée à chacun des composants de la couleur RVB. Cette fonction varie avec l'espace colorimétrique RVB. Par exemple, dans l'espace colorimétrique sRGB (qui peut être supposé si l'espace colorimétrique RVB est inconnu), cette fonction équivaut à peu près à élever chaque composante de couleur sRGB (allant de 0 à 1) à une puissance de 2,2. (Notez que "RVB linéaire" n'est pas un espace colorimétrique RVB.)
Voir aussi le commentaire de Violet Giraffe sur la "correction gamma".
rs = r * 0.25
,gs = g * 0.25
,bs = b * 0.25
(qui est une jolie teinte foncée); Teinte (rt, gt, bt):rt = r + (0.25 * (255 - r))
,gt = g + (0.25 * (255 - g))
,bt = b + (0.25 * (255 - b))
(qui est une teinte assez léger). Je l'ai fait dans le cadre d'un tableau cool qui a créé beaucoup de teintes et cela a très bien fonctionné. J'espère que cela pourra aider. Merci Peter.Quelques définitions
Créer une teinte ou une nuance
En fonction de votre modèle de couleur, il existe différentes méthodes pour créer une couleur plus foncée (ombrée) ou plus claire (teintée):
RGB
:Pour ombrager:
Pour teinter:
Plus généralement, la couleur résultant de la superposition d'une couleur
RGB(currentR,currentG,currentB)
avec une couleurRGBA(aR,aG,aB,alpha)
est:où
(aR,aG,aB) = black = (0,0,0)
pour l'ombrage et(aR,aG,aB) = white = (255,255,255)
pour la teintureHSV
ouHSB
:Value
/Brightness
ou augmenter leSaturation
Saturation
ou augmentez leValue
/Brightness
HSL
:Lightness
Lightness
Il existe des formules pour convertir d'un modèle de couleur à un autre. Selon votre question initiale, si vous êtes
RGB
et souhaitez utiliser leHSV
modèle pour ombrer par exemple, vous pouvez simplement convertir enHSV
, faire l'ombrage et reconvertir enRGB
. Les formules à convertir ne sont pas anodines mais peuvent être trouvées sur Internet. Selon votre langue, il peut également être disponible en tant que fonction principale:Comparaison des modèles
RGB
a l'avantage d'être très simple à mettre en œuvre, mais:HSV
ouHSB
est un peu complexe car vous devez jouer avec deux paramètres pour obtenir ce que vous voulez (Saturation
&Value
/Brightness
)HSL
est le meilleur de mon point de vue:50%
signifie une teinte inchangée>50%
signifie que la teinte est plus claire (teinte)<50%
signifie que la teinte est plus sombre (ombre)Lightness
pièce)la source
J'expérimente actuellement avec des toiles et des pixels ... Je trouve que cette logique fonctionne mieux pour moi.
ajouter pour compenser la valeur de 'teinte'
ou quelque chose comme ça...
la source