Gagnéposhu a écrit :Au risque d'être encore ignoré...
Comment calculer, teinte, saturation, luminosité couleur
- falsam
- Messages : 7334
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment calculer, teinte, saturation, luminosité couleur
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment calculer, teinte, saturation, luminosité couleur
Il ne me semble pas que ce soit le genre de Dobro de se fâcher parce qu'il y a une meilleur solution proposée (en fait, il ne me semble pas que ce soit le cas de qui que ce soit, puisque ça serait très contreproductif).Lord Nelson a écrit :Oui ton code est mieux pour le TSL vers RGB mais chuuuuuuut le dit pas à Dobro qui a passé des heurs à chercher sur internet la solution, il pourrais se fâcher...
Pour le coup, l'erreur à été de chercher sur le net plutôt que de poser les équations sur papier: c'était très facile de trouver deux valeurs, et puis le HUE c'est juste le placement d'une couleur sur un cercle. Reste plus qu'à diviser le cercle en 3 sections pour définir la dominante et après tout coule de source.
Re: Comment calculer, teinte, saturation, luminosité couleur
bien joué Poshu 
oui j'ai fait une recherche sur le NEt, car je me disais, qu'il doit bien trainer une solution (de facilité
)
ben en fait ...meme pas ! meme les pages de convertisseur faites en JavaScript, donnent des résultats completement faux
parce que un ou deux site balance un semblant de solution tout le monde a foncé dessus du coup on retrouve le meme Algo
partout (avec le nom des variables qui changent .. mais comme cet Algo est faux, tout le monde se plante !
ps: le Soldat inconnu ne fait pas exception, j'ai un vieux code de lui, qui contient la meme erreur ....
bref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants
oui j'ai fait une recherche sur le NEt, car je me disais, qu'il doit bien trainer une solution (de facilité
ben en fait ...meme pas ! meme les pages de convertisseur faites en JavaScript, donnent des résultats completement faux
parce que un ou deux site balance un semblant de solution tout le monde a foncé dessus du coup on retrouve le meme Algo
partout (avec le nom des variables qui changent .. mais comme cet Algo est faux, tout le monde se plante !
ps: le Soldat inconnu ne fait pas exception, j'ai un vieux code de lui, qui contient la meme erreur ....
bref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants
-
Lord Nelson
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Comment calculer, teinte, saturation, luminosité couleur
Je plaisantaisIl ne me semble pas que ce soit le genre de Dobro de se fâcher parce qu'il y a une meilleur solution proposée (en fait, il ne me semble pas que ce soit le cas de qui que ce soit, puisque ça serait très contreproductif).
Pour le coup, l'erreur à été de chercher sur le net plutôt que de poser les équations sur papier: c'était très facile de trouver deux valeurs, et puis le HUE c'est juste le placement d'une couleur sur un cercle. Reste plus qu'à diviser le cercle en 3 sections pour définir la dominante et après tout coule de source.
Déjà il fais un heureux, moi alors encore mercibref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants
Re: Comment calculer, teinte, saturation, luminosité couleur
Zut, je peux plus faire fortune parce que je l'ai posté ici et sur purebasicstreet alors?! Quel dommage xDDobro a écrit :bien joué Poshu
oui j'ai fait une recherche sur le NEt, car je me disais, qu'il doit bien trainer une solution (de facilité)
ben en fait ...meme pas ! meme les pages de convertisseur faites en JavaScript, donnent des résultats completement faux
parce que un ou deux site balance un semblant de solution tout le monde a foncé dessus du coup on retrouve le meme Algo
partout (avec le nom des variables qui changent .. mais comme cet Algo est faux, tout le monde se plante !![]()
ps: le Soldat inconnu ne fait pas exception, j'ai un vieux code de lui, qui contient la meme erreur ....
bref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants
Pour le coup, je pense que j'aurai cherché sur le net aussi si ton post n'avait pas indiqué que tes propres recherches avaient été infructueuses... Du coup, stylo, papier et il s'agit de résoudre deux équation à une inconnue et de la trigonométrie (que j'ai contourné comme un lache vu que je sais pas faire de trigo...), rien de bien sorcier.
-
Lord Nelson
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Comment calculer, teinte, saturation, luminosité couleur
Le problème est que maintenant je suis complètement pommer
Bha ouais, ya tellement de code différent et de solution miracle que j'en pers mon latin
Bha ouais, ya tellement de code différent et de solution miracle que j'en pers mon latin
- falsam
- Messages : 7334
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment calculer, teinte, saturation, luminosité couleur
Le code de Poshu ne te convient pas ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment calculer, teinte, saturation, luminosité couleur
Y'a pleins de codes qui fonctionnent très bien dans ce fil pour passer de RGB à TSV...
L'arrondi, franchement, ce n'est pas si grave, même photoshop le fait, hein...
Fait ton choix, c'est tout.
L'arrondi, franchement, ce n'est pas si grave, même photoshop le fait, hein...
Fait ton choix, c'est tout.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
-
Lord Nelson
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Comment calculer, teinte, saturation, luminosité couleur
Tout les codes sont bien mais je sais pas le quel utiliser
Bien sur qu'il me conviens tout comme celui de Dobro qui est superbe et d'autres encore...
Mais les deux donne des valeurs différentes alors je suis perdus
Vous avez été nombreux à m'aider au delà de toutes mes espérances et je vous en suis très reconnaissant
De toute façon j'ai pris tout les codes, comme ça, je pourrais les réutiliser au besoin
Bien sur qu'il me conviens tout comme celui de Dobro qui est superbe et d'autres encore...
Mais les deux donne des valeurs différentes alors je suis perdus
Vous avez été nombreux à m'aider au delà de toutes mes espérances et je vous en suis très reconnaissant
De toute façon j'ai pris tout les codes, comme ça, je pourrais les réutiliser au besoin
Re: Comment calculer, teinte, saturation, luminosité couleur
Bonjour Lord Nelson, c'est normal qu'ils n'envoient pas les mêmes valeurs, vu qu'ils n'utilisent pas les mêmes calculs, je pense qu'il faut faire une synthèse de toutes ces procédures et garder celles dont le résultat est le plus proche de ce que tu recherches !
De toutes manières, il y aura toujours des erreurs d'arrondi, même en utilisant un système utilisant des grands nombres et ce n'est pas du à PureBasic, mais au système d'exploitation que tu utilises et moi-même qui ait un système Windows 7 x64, je préfère travailler en 32 bits.
De toutes manières, il y aura toujours des erreurs d'arrondi, même en utilisant un système utilisant des grands nombres et ce n'est pas du à PureBasic, mais au système d'exploitation que tu utilises et moi-même qui ait un système Windows 7 x64, je préfère travailler en 32 bits.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
-
Lord Nelson
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Comment calculer, teinte, saturation, luminosité couleur
Salut Micoute,
Oui, je comprends.
Sinon, j'ai réussi en bidouillant à faire se jolie dégrader de couleurs mais il manque une partie

Comme je vous l'ais déjà dis il me semble, j’essaie de crée un dégrader uniforme
Mais plus dans ce style là:

Le but est de crée un dégrader de couleurs ou toutes les couleurs on la même luminosité
et qu'il n'y est pas deux couleurs identique dans le dégrader, dans le premier, toutes les couleurs son différente mais pas dans le deuxième !
Vous avez une idée de comment faire ceci ?
Oui, je comprends.
Sinon, j'ai réussi en bidouillant à faire se jolie dégrader de couleurs mais il manque une partie

Comme je vous l'ais déjà dis il me semble, j’essaie de crée un dégrader uniforme
Mais plus dans ce style là:

Le but est de crée un dégrader de couleurs ou toutes les couleurs on la même luminosité
et qu'il n'y est pas deux couleurs identique dans le dégrader, dans le premier, toutes les couleurs son différente mais pas dans le deuxième !
Vous avez une idée de comment faire ceci ?
Re: Comment calculer, teinte, saturation, luminosité couleur
Bah tiens, ca m'a permis de me rendre compte qu'il y avait une erreur dans ma fonction (si hue était comprise entre 300 et 301, le résultat était faux ^^; )
J'ai pompé le color picker de photoshop
Ca te va?

J'ai pompé le color picker de photoshop
Code : Tout sélectionner
Procedure Max(A,B)
If A > B
ProcedureReturn A
Else
ProcedureReturn B
EndIf
EndProcedure
Procedure Min(A,B)
If A < B
ProcedureReturn A
Else
ProcedureReturn B
EndIf
EndProcedure
Procedure.f Hue(RGB)
Protected R, G, B, nImax, nImin, Hue.f
If RGB < = $FFFFFF Or RGB > = 0
R = Red(RGB)
G = Green(RGB)
B = Blue(RGB)
nImax = Max(Max(r,b),g)
nImin = Min(Min(r,b),g)
If(nImax = r)
Hue=60*(g-b)/(nImax-nImin)
ElseIf nImax = g
Hue=60*(b-r)/(nImax-nImin)+120
ElseIf nImax = b
Hue=60*(r-g)/(nImax-nImin)+240
EndIf
If Hue<0
Hue = 360 + Hue
EndIf
EndIf
ProcedureReturn Hue
EndProcedure
Procedure.f Brightness(RGB)
Protected R, G, B, nImax, Brightness.f
If RGB < = $FFFFFF Or RGB > = 0
R = Red(RGB)
G = Green(RGB)
B = Blue(RGB)
nImax = Max(Max(r,b),g)
Brightness = nImax/255
EndIf
ProcedureReturn Brightness * 100
EndProcedure
Procedure.f Saturation(RGB)
Protected R, G, B, nImax, nImin, Saturation.f
If RGB < = $FFFFFF Or RGB > = 0
R = Red(RGB)
G = Green(RGB)
B = Blue(RGB)
nImax = Max(Max(r,b),g)
nImin = Min(Min(r,b),g)
Saturation = 1 - nImin / nImax
EndIf
ProcedureReturn Saturation * 100
EndProcedure
Procedure HSBToRGB(Hue.f,Saturation.f,Brightness.f)
Protected R,G,B
Protected TopColor = Round(Brightness*255/100,#PB_Round_Nearest)
Protected MinColor = Round((Saturation/100 -1)*-1*TopColor,#PB_Round_Nearest)
Select Hue
Case 61 To 180
G = TopColor
Hue = Round((Hue -120) * (TopColor - MinColor) / 60,#PB_Round_Nearest)
If Hue > 0
R = MinColor
B = hue + R
Else
B = MinColor
R = (hue - B) * -1
EndIf
Case 181 To 300
B = TopColor
Hue = Round((Hue -240) * (TopColor - MinColor) / 60,#PB_Round_Nearest)
If Hue > 0
G = MinColor
R = hue + G
Else
R = MinColor
G = (hue - R) * -1
EndIf
Default
R = TopColor
If hue > 300
Hue - 360
EndIf
Hue = Round(Hue * (TopColor - MinColor) / 60,#PB_Round_Nearest)
If hue > 0
B = MinColor
G = hue + B
Else
G = MinColor
B = (Hue - G) *-1
EndIf
EndSelect
ProcedureReturn RGB(R,G,B)
EndProcedure
OpenWindow(0,0,0,256,256,"Color Gradiant",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(0,0,0,256,256)
StartDrawing(CanvasOutput(0))
For loopY = 0 To 255
For loopX = 0 To 255
Plot(loopX,loopY,HSBToRGB(loopX*(360/255),100,100-(loopY/2.55)))
Next
Next
StopDrawing()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver

-
Lord Nelson
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Comment calculer, teinte, saturation, luminosité couleur
Jolie
C'est je crois que c'est ce que je voulais
Par contre j'ai vue que tu joue sur la luminosité alors que je pensais qu'il ne fallait pas la changer.
De plus plus tu descends (Vers la fin) et plus il y a des couleurs similaires.
Je te remercie beaucoup, je vais faire des petites bidouilles pour faire des expériences
Édit: Dobro, j'ai fais des tests avec ton code RGB_TSL et il subsistes ont dirait encore des erreurs, à ni rien comprendre
Regarde se très court échantillon de couleurs sur un totale de 195841 couleurs donc la luminosité est de 100:
C'est cyclique ont dirait alors que la couleurs est différente
Voici le code:
Ensuite j'ai trier le fichier à partir d'une position avec un logiciel.
Tu remarquera que j'ai très légèrement modifier ton code hein mais ça ne change rien au résultat je pense
C'est je crois que c'est ce que je voulais
Par contre j'ai vue que tu joue sur la luminosité alors que je pensais qu'il ne fallait pas la changer.
De plus plus tu descends (Vers la fin) et plus il y a des couleurs similaires.
Je te remercie beaucoup, je vais faire des petites bidouilles pour faire des expériences
Édit: Dobro, j'ai fais des tests avec ton code RGB_TSL et il subsistes ont dirait encore des erreurs, à ni rien comprendre
Regarde se très court échantillon de couleurs sur un totale de 195841 couleurs donc la luminosité est de 100:
Ne voie tu rien d'anormale ici, regarde bien...Couleur = 1048831 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1049087 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1049343 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1049599 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1049855 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1050111 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1050367 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1050623 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1050879 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1051135 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1051391 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1051647 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1051903 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1052159 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1052415 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1052671 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1052927 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1114367 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1114623 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1114879 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1115135 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1115391 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1115647 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1115903 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1116159 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1116415 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1116671 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1116927 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1117183 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1117439 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1117695 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1117951 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1118207 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1118463 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1118719 --> Teinte = 0.00000000000000000000, Saturation = 93.33333587646484400000, Luminosité = 100.00000000000000000000
Couleur = 1179903 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1180159 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1180415 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1180671 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1180927 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1181183 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1181439 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1181695 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1181951 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1182207 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1182463 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1182719 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1182975 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1183231 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1183487 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1183743 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1183999 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1184255 --> Teinte = 0.00000000000000000000, Saturation = 93.33333587646484400000, Luminosité = 100.00000000000000000000
Couleur = 1184511 --> Teinte = 0.00000000000000000000, Saturation = 92.94117736816406300000, Luminosité = 100.00000000000000000000
Couleur = 1245439 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
Couleur = 1245695 --> Teinte = 0.00000000000000000000, Saturation = 99.60784149169921900000, Luminosité = 100.00000000000000000000
Couleur = 1245951 --> Teinte = 0.00000000000000000000, Saturation = 99.21568298339843800000, Luminosité = 100.00000000000000000000
Couleur = 1246207 --> Teinte = 0.00000000000000000000, Saturation = 98.82353210449218800000, Luminosité = 100.00000000000000000000
Couleur = 1246463 --> Teinte = 0.00000000000000000000, Saturation = 98.43137359619140600000, Luminosité = 100.00000000000000000000
Couleur = 1246719 --> Teinte = 0.00000000000000000000, Saturation = 98.03921508789062500000, Luminosité = 100.00000000000000000000
Couleur = 1246975 --> Teinte = 0.00000000000000000000, Saturation = 97.64705657958984400000, Luminosité = 100.00000000000000000000
Couleur = 1247231 --> Teinte = 0.00000000000000000000, Saturation = 97.25490570068359400000, Luminosité = 100.00000000000000000000
Couleur = 1247487 --> Teinte = 0.00000000000000000000, Saturation = 96.86274719238281300000, Luminosité = 100.00000000000000000000
Couleur = 1247743 --> Teinte = 0.00000000000000000000, Saturation = 96.47058868408203100000, Luminosité = 100.00000000000000000000
Couleur = 1247999 --> Teinte = 0.00000000000000000000, Saturation = 96.07843017578125000000, Luminosité = 100.00000000000000000000
Couleur = 1248255 --> Teinte = 0.00000000000000000000, Saturation = 95.68627166748046900000, Luminosité = 100.00000000000000000000
Couleur = 1248511 --> Teinte = 0.00000000000000000000, Saturation = 95.29412078857421900000, Luminosité = 100.00000000000000000000
Couleur = 1248767 --> Teinte = 0.00000000000000000000, Saturation = 94.90196228027343700000, Luminosité = 100.00000000000000000000
Couleur = 1249023 --> Teinte = 0.00000000000000000000, Saturation = 94.50980377197265600000, Luminosité = 100.00000000000000000000
Couleur = 1249279 --> Teinte = 0.00000000000000000000, Saturation = 94.11764526367187500000, Luminosité = 100.00000000000000000000
Couleur = 1249535 --> Teinte = 0.00000000000000000000, Saturation = 93.72548675537109400000, Luminosité = 100.00000000000000000000
Couleur = 1249791 --> Teinte = 0.00000000000000000000, Saturation = 93.33333587646484400000, Luminosité = 100.00000000000000000000
Couleur = 1250047 --> Teinte = 0.00000000000000000000, Saturation = 92.94117736816406300000, Luminosité = 100.00000000000000000000
Couleur = 1250303 --> Teinte = 0.00000000000000000000, Saturation = 92.54901885986328100000, Luminosité = 100.00000000000000000000
Couleur = 1310975 --> Teinte = 0.00000000000000000000, Saturation = 100.00000000000000000000, Luminosité = 100.00000000000000000000
C'est cyclique ont dirait alors que la couleurs est différente
Voici le code:
Code : Tout sélectionner
Enumeration 1
#ImageCreation
EndEnumeration
; Minimum entre 2 Valeurs
Procedure.f Min(Val_1.f, Val_2.f, Val_3.f)
If Val_1 <= Val_2
Minimum2.f = Val_1
Else
Minimum2.f = Val_2
EndIf
If Val_3 <= Minimum2.f
Minimum2.f = Val_3
EndIf
ProcedureReturn Minimum2
EndProcedure
; Maximum entre 2 Valeurs
Procedure.f Max(Val_1.f, Val_2.f, Val_3.f)
If Val_1 <= Val_2
Maximum2.f = Val_2
Else
Maximum2.f = Val_1
EndIf
If Val_3 >= Maximum2.f
Maximum2.f = Val_3
EndIf
ProcedureReturn Maximum2
EndProcedure
; Convertie la couleur en Teinte, Saturation et luminosité
Procedure.s RgbToTSL(Couleur.i, NombreDeDecimale.i = 0)
If NombreDeDecimale.i < 0
NombreDeDecimale.i = 0
ElseIf NombreDeDecimale.i > 10
NombreDeDecimale.i = 10
EndIf
; By Dobro d'apres:
; http://www.la-photo-en-faits.com/2013/05/RVB-CMJN-TSL-conversion-definition.html et http://www.irem.univ-montp2.fr/optionsciences/20052006/nuanciers.pdf
R = Red(Couleur.i)
V = Green(Couleur.i)
B = Blue(Couleur.i)
Maxi = Max(R,V,B)
Mini = Min(R,V,B)
C = (Maxi - mini)
If Maxi = R
T.f = 60 * (V - B) / C
EndIf
If Maxi = V
T.f = 60 * (2 + (B - R) / C)
EndIf
If Maxi=B
T.f = 60 * (4 + (B - R) / C)
EndIf
S.f = 100 * C / Maxi
L.f = 100 * Maxi / 255
If T.f <= 0
T.f = 0
EndIf
If L.f <= 0
L.f = 0
EndIf
If S.f <= 0
S.f=0
EndIf
; Debug "T.f = " + T.f
; Debug "S.f = " + S.f
; Debug "L.f = " + L.f
; Debug ""
Sortie.s = StrF(T, NombreDeDecimale.i) + "," + StrF(S, NombreDeDecimale.i) + "," + StrF(L, NombreDeDecimale.i) + "," + Str(R) + "," + Str(V) + "," + Str(B)
ProcedureReturn Sortie.s
EndProcedure
; Création d'une liste qui contiendrat toutes les couleurs don la luminosité est égale strictement à 100.
NewList MaListeDeCouleur.s()
CreateFile(1, "Table de couleurs.txt")
; Je passe en revue toutes les couleurs 24 Bit.
For Couleur.i = 0 To 16777215
TSL.s = RgbToTSL(Couleur.i, 20) ; Je convertie la couleur en court en niveau de Teinte, Saturation et Luminosité.
Teinte.f = ValF(StringField(TSL.s, 1, ",")) ; Récupération du niveau de Teinte de la couleur en court.
Saturation.f = ValF(StringField(TSL.s, 2, ",")) ; Récupération du niveau de Saturation de la couleur en court.
Luminosite.f = ValF(StringField(TSL.s, 3, ",")) ; Récupération du niveau de Luminosité de la couleur en court.
; Je vais porendre en compte que les couleurs ayant un niveau de luminosité égale
; strictement à 100 pour que toutes les couleurs est éxactement la même luminosité.
If Luminosite = 100 ; Si la couleur en court a un niveau de luminosité striquement égale à 100.
WriteStringN(1, "Couleur = " + Str(Couleur.i) + " --> Teinte = " + StrF(Teinte.f, 20) + ", Saturation = " + StrF(Saturation.f, 20) + ", Luminosité = " + StrF(Luminosite.f, 20))
EndIf
Next
CloseFile(1)
Tu remarquera que j'ai très légèrement modifier ton code hein mais ça ne change rien au résultat je pense
Re: Comment calculer, teinte, saturation, luminosité couleur
Bah là, j'ai fait un dégradé basé sur la brightness et le hue parce que c'est ce qui m'est venu en regardant la photo que tu avais posté, mais le résultat sera équivalant si tu switch entre intensity et brightness, sauf qu'au lieu de tendre vers le noir, ça va tendre vers le blanc... Le problème, c'est que je n'arrive pas à comprendre exactement ce que tu veux, donc je peux pas le coder pour toi :/Lord Nelson a écrit :Jolie![]()
C'est je crois que c'est ce que je voulais![]()
Par contre j'ai vue que tu joue sur la luminosité alors que je pensais qu'il ne fallait pas la changer.
De plus plus tu descends (Vers la fin) et plus il y a des couleurs similaires.
-
Lord Nelson
- Messages : 355
- Inscription : dim. 01/déc./2013 15:29
Re: Comment calculer, teinte, saturation, luminosité couleur
Bonjour poschu,
Tu as vue le jolie dégrader (Le premier) que j'ai fais ?
Il est bien lui mais il manque une partie
Je ne sais pas pourquoi mais tu voie comme j'ai dit et bien je cherche à crée une jolie palette dans se style
avec aucune couleur similaire, dans le premier dégrader aucune couleurs n'est identique
Mais en faite je viens de me rendre compte au post plus haut que la procédure de Dobro à des soucis...
Je ne veux pas t’embêter d'avantage...
Je suis très confus en plus parce que j'arrive pas à faire se que je veux
Peut être que je devrais laissez tomber ?
Tu as vue le jolie dégrader (Le premier) que j'ai fais ?
Il est bien lui mais il manque une partie
Je ne sais pas pourquoi mais tu voie comme j'ai dit et bien je cherche à crée une jolie palette dans se style
avec aucune couleur similaire, dans le premier dégrader aucune couleurs n'est identique
Mais en faite je viens de me rendre compte au post plus haut que la procédure de Dobro à des soucis...
Je ne veux pas t’embêter d'avantage...
Je suis très confus en plus parce que j'arrive pas à faire se que je veux
Peut être que je devrais laissez tomber ?