Conversions couleur / rvb / hsi (optimisé)

Description

Conversions Variable_Couleur / Rouge_Vert_Bleu / Hue_Saturation_Intensité dans tous les sens (Module + exemple)

##############################
Un peu de théorie...
##############################

Une couleur peut être codée principalement de 3 façons différentes :
COULEUR, RVB, et HSI

1°) La COULEUR elle-même sur 24 bits, soit 16 millions de couleurs (exatement 16777216)
- 8 bits rouge
- 8 bits vert
- 8 bits bleu

2°) Ses 3 composantes RVB (Rouge, Vert, Bleu) ou RGB en anglais (Red, Green, Blue)
- R - Rouge de 0 à 255, soit 256 niveaux de rouge
- V - Vert de 0 à 255, soit 256 niveaux de vert
- B - Bleu de 0 à 255, soit 256 niveaux de bleu
Combinaisons des 3 = 256*256*256 = 16 milions de couleurs (le compte est bon)

Couleur = (((bleu x 256) + vert) x 256) + rouge
= rouge + (256 x vert) + (65536 x bleu)

3°) Sa correspondance HSI (Hue*, Saturation, Intensity) en anglais
Abréviation française souvent utilisée : TSL (Teinte, Saturation, Luminosité)
(* prononcer "YOU")
- H : Hue = Teinte
- S : Saturation = Saturation
- I : Intensity = Luminosité

La Teinte (HUE) correspond à la couleur dominante :
Valeurs de 0 à 239 :
- 0 = rouge
- 20 = orange (rouge + un peu de vert)
- 40 = jaune (rouge + vert)
- 80 = vert
- 120 = bleu ciel (vert + bleu)
- 160 = bleu
- 200 = violet (bleu + rouge)
- 239 = presque rouge

Exemple : Teinte ROUGE (valeur 0) et ses variations de Saturation et de Luminosité :
- rouge (rouge)
- rouge foncé (marron)
- rouge très foncé (noir)
- rouge clair (rose)
- rouge très clair (blanc)
- rouge pâle (gris)

La Saturation (SATURATION) correspond contraste de couleur :
Valeur de 0 à 240 :
- 0 : Vous avez encore une télé en noir et blanc ?!
- 240 : Attention les yeux !

La Luminosité (INTENSITY) est la notion de sombre ou clair :
Valeur de 0 à 240 :
- 0 : Qui a éteint la lumière ?!
- 220 : Vive les lunettes de soleil !
- 240 : Blanc.
- 120 : Là, c'est beaucoup mieux.

#####################
En pratique
#####################

"Couleur.bas" est un module comportant toutes les fonctions de conversions de couleurs dont vous aurez besoin.

"Couleur_RVB_HSI.vbp" est une petite application pédagogique utilisant mon module Couleur.bas.
Résolution minimum : 800 x 600

Le but : comprendre le principe de conversion RVB <-> HSI

Source / Exemple :


Call Fichier_Zip("Rien de tel qu'une bonne démo !")

'################################################################
'
'     UTILISATION DES 4 FONCTIONS SUIVANTES (by Columbiad)
'
'     - Couleur_2_RVB()
'     - Couleur_2_HSI()                                      
'     - RVB_2_HSI()
'     - HSI_2_RVB()
'
'################################################################
'
'Voici toutes les conversions possibles en une seule ligne :
'-----------------------------------------------------------
'
'A PARTIR D'UNE COULEUR :
'------------------------
'Convertir une COULEUR en R,V,B :
'    Call Couleur_2_RVB(COULEUR, R, V, B)
'      ou
'    Couleur_2_RVB COULEUR, R, V, B
'
'Convertir une COULEUR en H,S,I :
'    Call Couleur_2_HSI(COULEUR, H, S, I)
'      ou
'    Couleur_2_HSI COULEUR, H, S, I
'
'Convertir une COULEUR en H,S,I et en R,V,B :
'    Call Couleur_2_HSI(COULEUR, H, S, I, R, V, B)
'      ou
'    Couleur_2_HSI COULEUR, H, S, I, R, V, B
'
'
'A PARTIR DES COMPOSANTES RVB :
'------------------------------
'Convertir R, V, B en COULEUR :
'    COULEUR = RGB(R, V, B)
'
'Convertir R,V,B en H,S,I :
'    Call RVB_2_HSI(R, V, B, H, S, I)
'      ou
'    RVB_2_HSI R, V, B, H, S, I
'
'Convertir R,V,B en H,S,I et en COULEUR :
'    COULEUR = RVB_2_HSI(R, V, B, H, S, I)
'
'
'A PARTIR DE LA CORRESPONDANTE HSI :
'-----------------------------------
'Convertir HSI en COULEUR :
'    COULEUR = HSI_2_RVB(H, S, I)
'
'Convertir HSI en RVB :
'    Call HSI_2_RVB(H, S, I, R, V, B)
'      ou
'    HSI_2_RVB H, S, I, R, V, B
'
'Convertir HSI en RVB et en COULEUR :
'    COULEUR = HSI_2_RVB(H, S, I, R, V, B)
'
End

Conclusion :


PS : Vous trouverez parfois la SATURATION ou l'INTENSITE en pourcentages
(valeurs de 0 à 100)
-> Il vous suffira de les multiplier par 2,4 avant de les utiliser.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.