tu pourrais sans doute utilise des Byte, mais quitte a ne pas le faire, utilises des Long plutot que des Integer, les processeurs 32 bits prefereront...
If I < 240 / 2 Then
ColorL = (I / 240) * (1 - (S / 240))
ColorH = (I / 240) * (1 + (S / 240))
Else
ColorL = (I / 240) - (1 - (I / 240)) * (S / 240)
ColorH = (I / 240) + (1 - (I / 240)) * (S / 240)
End If
dans ce genre de cas, il peut etre fructueux de mettre en cache les calculs intermédiaires (tes divisions)
j'ai pas tout suivit de la logique appliquée, a toi de voir s'il n'est pas possible d'utiliser des ElseIf... (cas qui s'exclueraient les uns les autres)
If V Color1 And R Color3 Then Plage = 6: Color2 = B: sens = -1
If V Color1 And B Color3 Then Plage = 4: Color2 = R: sens = 1
If R Color1 And B Color3 Then Plage = 4: Color2 = V: sens = -1
If R Color1 And V Color3 Then Plage = 2: Color2 = B: sens = 1
If B Color1 And V Color3 Then Plage = 2: Color2 = R: sens = -1
If B Color1 And R Color3 Then Plage = 0: Color2 = V: sens = 1
Columbiad
Messages postés1Date d'inscriptionlundi 20 janvier 2003StatutMembreDernière intervention10 décembre 2007 10 déc. 2007 à 18:29
Merci CLOCK ! Je me suis efforcé de rendre mes explication aussi claires que possible. Je suis heureux d'avoir pu te rendre ce service.
---
Renfield : Si tu me trouves des fonctions de conversion plus réduites que dans le module Couleur.bas, je suis preneur (^_^). (L'optimisation ne porte que sur ce module, l'appli de démo n'est là que pour comprendre les conversions RVB/HSI, un peu bourrin je l'avoue, mais ça fonctionne...)
---
Salutations à toutes et tous (^_^)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 9 déc. 2007 à 22:01
optimisé, je ne sais pas, reste que tu semble bien maitriser ton sujet
clock
Messages postés6Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention 9 décembre 2007 9 déc. 2007 à 17:05
Super travail , voici 2 ans que je cherche à convertir une couleur d'un pixel en une donnée numérique équivalente ...... Merci !
Je te donne 10/10 ....
Biensur , sur ce site il y à quantité de progs parlant de se sujet
cependant plus claire , plus accomplis que ça , non !!..
cs_windob
Messages postés225Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention25 août 2008 8 déc. 2007 à 14:13
Pour chipoter :
Hue = Teinte en français
L'abréviation la plus souvent utilisée en français est TSL pour Teinte Saturation Luminosité.
10 déc. 2007 à 19:11
concernant l'optimisation, voici de betes exemples...
MIN(MIN(R, V), B)
induit deux appels de fonction, donc deux passages de parametres, etc...
fais une fonction Min3... par exemple
les divisions sont plus couteuses en nombre de cycles que les multiplications...
/2 se dit * 0.5
Couleur_2_RVB est à recoder en calculs, sans passage par la case String
(voir http://www.vbfrance.com/codes/RGB-VICE-VERSA-TRES-RAPIDE_40189.aspx)
tu pourrais sans doute utilise des Byte, mais quitte a ne pas le faire, utilises des Long plutot que des Integer, les processeurs 32 bits prefereront...
If I < 240 / 2 Then
ColorL = (I / 240) * (1 - (S / 240))
ColorH = (I / 240) * (1 + (S / 240))
Else
ColorL = (I / 240) - (1 - (I / 240)) * (S / 240)
ColorH = (I / 240) + (1 - (I / 240)) * (S / 240)
End If
dans ce genre de cas, il peut etre fructueux de mettre en cache les calculs intermédiaires (tes divisions)
j'ai pas tout suivit de la logique appliquée, a toi de voir s'il n'est pas possible d'utiliser des ElseIf... (cas qui s'exclueraient les uns les autres)
If V Color1 And R Color3 Then Plage = 6: Color2 = B: sens = -1
If V Color1 And B Color3 Then Plage = 4: Color2 = R: sens = 1
If R Color1 And B Color3 Then Plage = 4: Color2 = V: sens = -1
If R Color1 And V Color3 Then Plage = 2: Color2 = B: sens = 1
If B Color1 And V Color3 Then Plage = 2: Color2 = R: sens = -1
If B Color1 And R Color3 Then Plage = 0: Color2 = V: sens = 1
10 déc. 2007 à 18:29
---
Renfield : Si tu me trouves des fonctions de conversion plus réduites que dans le module Couleur.bas, je suis preneur (^_^). (L'optimisation ne porte que sur ce module, l'appli de démo n'est là que pour comprendre les conversions RVB/HSI, un peu bourrin je l'avoue, mais ça fonctionne...)
---
Salutations à toutes et tous (^_^)
9 déc. 2007 à 22:01
9 déc. 2007 à 17:05
Je te donne 10/10 ....
Biensur , sur ce site il y à quantité de progs parlant de se sujet
cependant plus claire , plus accomplis que ça , non !!..
8 déc. 2007 à 14:13
Hue = Teinte en français
L'abréviation la plus souvent utilisée en français est TSL pour Teinte Saturation Luminosité.