Comment calculer, teinte, saturation, luminosité couleur

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par falsam »

poshu a écrit :Au risque d'être encore ignoré...
Gagné :mrgreen:
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%
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par poshu »

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...
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).
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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Backup »

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é :mrgreen: )

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 ! :twisted:

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

Message par Lord Nelson »

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).
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.
Je plaisantais :)
bref , Poshu, tu devrai vendre (ou publier) ton Algo, tu vas faire fortune , ou faire des heureux chez les étudiants :)
Déjà il fais un heureux, moi alors encore merci :D
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par poshu »

Dobro 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é :mrgreen: )

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 ! :twisted:

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 :)
Zut, je peux plus faire fortune parce que je l'ai posté ici et sur purebasicstreet alors?! Quel dommage xD

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

Message par Lord Nelson »

Le problème est que maintenant je suis complètement pommer :? :lol:
Bha ouais, ya tellement de code différent et de solution miracle que j'en pers mon latin :mrgreen:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par falsam »

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%
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Fig »

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.
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
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Lord Nelson »

Tout les codes sont bien mais je sais pas le quel utiliser :P
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 :)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Micoute »

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.
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 !
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Lord Nelson »

Salut Micoute,

Oui, je comprends.

Sinon, j'ai réussi en bidouillant à faire se jolie dégrader de couleurs mais il manque une partie :(
Image

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à:
Image

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 ? :)
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par poshu »

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

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
Ca te va?
Image
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Lord Nelson »

Jolie :D
C'est je crois que c'est ce que je voulais 8)

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 :P

Édit: Dobro, j'ai fais des tests avec ton code RGB_TSL et il subsistes ont dirait encore des erreurs, à ni rien comprendre 8O
Regarde se très court échantillon de couleurs sur un totale de 195841 couleurs donc la luminosité est de 100:
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
Ne voie tu rien d'anormale ici, regarde bien...
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)
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 :wink:
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par poshu »

Lord Nelson a écrit :Jolie :D
C'est je crois que c'est ce que je voulais 8)

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.
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
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Comment calculer, teinte, saturation, luminosité couleur

Message par Lord Nelson »

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 ?
Répondre