TSL - RGB, RGB - TSL, 0 - 255

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

TSL - RGB, RGB - TSL, 0 - 255

Message par Shadow »

Salut, je souhaiterais depuis ses 3 procédure-ci et aussi RGB
convertir du TSL vers RGB et inversement.

Les résultats varieront de 0 à 255 si j'me plante pas :)
Je ne sais plus à qui appartienne ses procédure-ci dessous:

Code : Tout sélectionner

Procedure Teinte(Couleur.i) ; Donne la teinte d'une couleur (Hue)
   Protected fTeinte.f, Rouge.i, Vert.i, Bleu.i, Minimum.i, Maximum.i, Difference.i
   Rouge = Red(Couleur) : Vert = Green(Couleur) : Bleu = Blue(Couleur)
   If Rouge =  Vert And Rouge = Bleu And Vert = Bleu
      ProcedureReturn 160
   EndIf
   If Rouge < Vert And Rouge < Bleu
      Minimum = Rouge
      If Vert > Bleu
         Maximum = Vert
      Else
         Maximum = Bleu
      EndIf
   ElseIf Vert < Bleu
      Minimum = Vert
      If Rouge > Bleu
         Maximum = Rouge
      Else
         Maximum = Bleu
      EndIf
   Else
      Minimum = Bleu
      If Rouge > Vert
         Maximum = Rouge
      Else
         Maximum = Vert
      EndIf
   EndIf
   Difference = Maximum-Minimum
   If Rouge = Maximum
      fTeinte = (Vert-Bleu)/Difference
   ElseIf Vert = Maximum
      fTeinte = (Bleu-Rouge)/Difference + 2
   Else
      fTeinte = (Rouge-Vert)/Difference + 4
   EndIf
   If fTeinte< 0
      ProcedureReturn 255+Round(Mod((1/6*(fTeinte*255)), 255), #PB_Round_Nearest)
   Else
      ProcedureReturn Round(Mod((1/6*(fTeinte*255)), 255), #PB_Round_Nearest)
   EndIf
   
EndProcedure

Procedure Saturation(Couleur.i) ; retourne la saturation d'une couleur
   Protected Rouge.i, Vert.i, Bleu.i, Minimum.i, Maximum.i
   Rouge = Red(Couleur) : Vert = Green(Couleur) : Bleu = Blue(Couleur)
   If (Rouge = 0 And Vert = 0 And Bleu = 0) Or (Rouge = 255 And Vert = 255 And Bleu = 255)
      ProcedureReturn 0
   EndIf
   If Rouge < Vert And Rouge < Bleu
      Minimum = Rouge
      If Vert > Bleu
         Maximum = Vert
      Else
         Maximum = Bleu
      EndIf
   ElseIf Vert < Bleu
      Minimum = Vert
      If Rouge > Bleu
         Maximum = Rouge
      Else
         Maximum = Bleu
      EndIf
   Else
      Minimum = Bleu
      If Rouge > Vert
         Maximum = Rouge
      Else
         Maximum = Vert
      EndIf
   EndIf
   If Maximum+Minimum =< 255
      ProcedureReturn Round(((Maximum-Minimum)/(Maximum+Minimum)*255),#PB_Round_Nearest)
   Else
      ProcedureReturn Round(((Maximum-Minimum)/(510-(Maximum+Minimum))*255), #PB_Round_Nearest)
   EndIf
 EndProcedure
 
Procedure Luminosite(Couleur.i) ; Donne la luminosité d'une couleur
   Protected Rouge.i, Vert.i, Bleu.i, Minimum.i, Maximum.i
   Rouge = Red(Couleur) : Vert = Green(Couleur) : Bleu = Blue(Couleur)
   If Rouge < Vert And Rouge < Bleu
      Minimum = Rouge
      If Vert > Bleu
         Maximum = Vert
      Else
         Maximum = Bleu
      EndIf
   ElseIf Vert < Bleu
      Minimum = Vert
      If Rouge > Bleu
         Maximum = Rouge
      Else
         Maximum = Bleu
      EndIf
   Else
      Minimum = Bleu
      If Rouge > Vert
         Maximum = Rouge
      Else
         Maximum = Vert
      EndIf
   EndIf
   ProcedureReturn Round((255*(Maximum + Minimum)/510), #PB_Round_Nearest)
EndProcedure
Pourriez-vous m'aider svp :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par TazNormand »

Image
Image
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par Shadow »

Merci Taz.
Mais je trouve pas, entre 0 et 255.

Arès quel est la vraie norme ?
0 - 255 pour tout
100% pour tout sauf teinte 0 - 360.

C'est pour mon programme Boîte couleur.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par TazNormand »

Dans mon ancien topic, tu as 2 fonctions de conversion RGB2HSL() et HLS2RGB().

Dans le cas du HSL2RGB(Teinte,Saturation,Luminosité), si tu lui passes les valeurs TSL (HSL en anglais), elle te redonne les 3 valeurs du Rouge, du Vert et du Bleu, donc forcément, tu ne va pas avoir une valeur entre 0 et 255 unique, mais 3 valeurs entre 0 et 255 pour les 3 couleurs RVB.

Tu cherches à travailler sur une palette de 256 couleurs, alors que la fonction renvoie à une palette de 256*256*256 (un peu plus de 16 Millions de couleurs).

Tu cherches quoi exactement, à créer une palette de 256 couleurs, ou à "bloquer" 256 couleurs sur une palette de 16 millions ?
Image
Image
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par Shadow »

Non simplement renvoyer TSL ou chaque canaux va de 0 à 255 :)
Après je sais pas je fais se que je peut, je ne sais pas c'est quoi la norme.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par GallyHC »

Bonjour,

Si je peux me permettre une chose, si tu ne sais pas, tu peux faire comme beaucoup et rechercher sur le net des informations sur le sujet que tu recherches (en a peine 10 secondes, j'ai trouvé, https://fr.wikipedia.org/wiki/Teinte_sa ... mi%C3%A8re).

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par Bernie »

je comprend pas que ce tu veux faire exactement
tu une commande en pb qui s'appelle ColorRequester qui t'affiche la boite de dialogue de la palette couleur
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par Micoute »

Bernie a écrit :je ne comprends pas que ce tu veux faire exactement
tu as une commande en pb qui s'appelle ColorRequester qui t'affiche la boîte de dialogue de la palette couleur
Tu n'as jamais eus l'envie de créer tes propres gadgets ?
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 !
Bernie
Messages : 282
Inscription : mar. 22/mars/2016 10:12
Localisation : En France

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par Bernie »

Micoute a écrit :
Bernie a écrit :je ne comprends pas que ce tu veux faire exactement
tu as une commande en pb qui s'appelle ColorRequester qui t'affiche la boîte de dialogue de la palette couleur
Tu n'as jamais eus l'envie de créer tes propres gadgets ?
non ça m'intéresse pas du tout il y a PIF pour faire ça :mrgreen:
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: TSL - RGB, RGB - TSL, 0 - 255

Message par microdevweb »

Pour information mon cher Bernie,

Le colorRequester de Pb est fortement l'imité (exemple: ne prend pas en charge les alphas) je ne comprend d’ailleurs pas que le colorRequester de l'ide ne fasse pas partie des gadgets. Donc il peu-être intéressant de faire sont propre colorRequester .
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre