FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Conversion RGB/HSV Emptypar papydall Aujourd'hui à 2:21

» Gestion d'un système client-serveur.
Conversion RGB/HSV Emptypar Klaus Hier à 23:59

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Conversion RGB/HSV Emptypar Marc Hier à 12:14

» @Jack
Conversion RGB/HSV Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Conversion RGB/HSV Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Conversion RGB/HSV Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Conversion RGB/HSV Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Conversion RGB/HSV Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Conversion RGB/HSV Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Conversion RGB/HSV Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Conversion RGB/HSV Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Conversion RGB/HSV Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Conversion RGB/HSV Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Conversion RGB/HSV Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Conversion RGB/HSV Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -20%
-20% Récupérateur à eau mural 300 ...
Voir le deal
79 €

 

 Conversion RGB/HSV

Aller en bas 
5 participants
AuteurMessage
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 21 Sep 2013 - 10:53

Un programme de conversion avec 3 SUBs :

Code:

' *******************************************************************
' Procedures de conversion RGB/HSV
' *******************************************************************
' Adapte de http://www.cs.rit.edu/~ncs/color/t_convert.html
' R, G, B = [0..255]
' H = [0..360], S = [0..1], V = [0..1]
' si S = 0, H = 0 par defaut
' *******************************************************************

' Variables globales des procedures
dim RGB_R%, RGB_G%, RGB_B%, RGB_Hex$, HSV_H, HSV_S, HSV_V

' Variables globales du programme principal
dim R%, G%, B%, H, S, V

' -------------------------------------------
' Description des objets
' -------------------------------------------

' Fenêtre principale

left    0, 220
top     0, 200
width   0, 390
height  0, 250
caption 0, "Conversion HSV / RGB"

' Spins 1-6 (Saisie des données)

spin  1        : ' Teinte (Hue)
left  1, 20
top   1, 30
width 1, 75
min   1, 0
max   1, 360

spin  2        : ' Saturation
left  2, 20
top   2, 80
width 2, 75
min   2, 0
max   2, 100

spin  3        : ' Luminosite (Value)
left  3, 20
top   3, 130
width 3, 75
min   3, 0
max   3, 100

spin  4        : ' Rouge
left  4, 290
top   4, 30
width 4, 75
min   4, 0
max   4, 255

spin  5        : ' Vert
left  5, 290
top   5, 80
width 5, 75
min   5, 0
max   5, 255

spin  6        : ' Bleu
left  6, 290
top   6, 130
width 6, 75
min   6, 0
max   6, 255

' Boutons 7-8 (Conversions)

button  7
left    7, 20
top     7, 180
caption 7, "HSV --> RGB"

button  8
left    8, 290
top     8, 180
caption 8, "RGB --> HSV"

' Label 9 (Affichage de la couleur)

alpha  9
left   9, 120
top    9, 10
width  9, 140
height 9, 150
color  9, 0, 0, 0

' Labels 10-16 (Etiquettes)

alpha   10
left    10, 120
top     10, 185
width   10, 140
height  10, 25
caption 10, "Hexadécimal"

alpha   11
left    11, 20
top     11, 10
width   11, 75
caption 11, "Teinte (H)"

alpha   12
left    12, 20
top     12, 60
width   12, 75
caption 12, "Saturation (S)"

alpha   13
left    13, 20
top     13, 110
width   13, 75
caption 13, "Luminosité (V)"

alpha   14
left    14, 290
top     14, 10
width   14, 75
caption 14, "Rouge (R)"

alpha   15
left    15, 290
top     15, 60
width   15, 75
caption 15, "Vert (G)"

alpha   16
left    16, 290
top     16, 110
width   16, 75
caption 16, "Bleu (B)"

' Edit 17 (Code hexadecimal)

edit  17
left  17, 190
top   17, 180
width 17, 70

' ----------------------------------------------
' Affectation des sous-programmes aux événements
' ----------------------------------------------

label HSV_RGB, RGB_HSV

on_click 7, HSV_RGB
on_click 8, RGB_HSV

' -------------------------------------------
' Fin du programme principal
' -------------------------------------------

end

' -------------------------------------------
' Sous-programmes
' -------------------------------------------

HSV_RGB:
 H = position(1)
 S = position(2) / 100
 V = position(3) / 100

 HSVtoRGB(H, S, V)
 RGBtoHex(RGB_R%, RGB_G%, RGB_B%)

 color 9, RGB_R%, RGB_G%, RGB_B%
 text 17, "#" + RGB_Hex$

 position 4, RGB_R%
 position 5, RGB_G%
 position 6, RGB_B%
return

RGB_HSV:
 R% = position(4)
 G% = position(5)
 B% = position(6)

 RGBtoHSV(R%, G%, B%)
 RGBtoHex(R%, G%, B%)

 color 9, R%, G%, B%
 text 17, "#" + RGB_Hex$

 position 1, int(HSV_H)
 position 2, int(100 * HSV_S)
 position 3, int(100 * HSV_V)
return

' -------------------------------------------
' Procedures
' -------------------------------------------

sub RGBtoHSV(R%, G%, B%)
' Conversion RGB --> HSV
' Resultat dans HSV_H, HSV_S, HSV_V

 dim_local RR, GG, BB, Mini, Maxi, Delta

 RR = R% / 255
 GG = G% / 255
 BB = B% / 255

 Mini = RR
 if GG < Mini then Mini = GG
 if BB < Mini then Mini = BB

 Maxi = RR
 if GG > Maxi then Maxi = GG
 if BB > Maxi then Maxi = BB

 HSV_V = Maxi

 if (Maxi = 0) or (Maxi = Mini)
   HSV_S = 0
   HSV_H = 0
   exit_sub
 end_if

 Delta = Maxi - Mini

 HSV_S = Delta / Maxi
 
 if RR = Maxi then HSV_H = (GG - BB) / Delta      : ' entre jaune & magenta
 if GG = Maxi then HSV_H = 2 + (BB - RR) / Delta  : ' entre cyan & jaune
 if BB = Maxi then HSV_H = 4 + (RR - GG) / Delta  : ' entre magenta & cyan

 HSV_H = HSV_H * 60
 if HSV_H < 0 then HSV_H = HSV_H + 360            : ' degres

end_sub

sub HSVtoRGB(H, S, V)
' Conversion HSV --> RGB
' Resultat dans RGB_R%, RGB_G%, RGB_B%

 if S = 0
   RGB_R% = int(V * 255)
   RGB_G% = RGB_R%
   RGB_B% = RGB_R%
   exit_sub
 end_if

 dim_local I%, Z, F, P, Q, T, RR, GG, BB

 Z  = H / 60
 I% = int(Z)
 F  = frac(Z)
 P  = V * (1 - S)
 Q  = V * (1 - S * F)
 T  = V * (1 - S * (1 - F))

 select I%
   case 0
     RR = V : GG = T : BB = P
   case 1
     RR = Q : GG = V : BB = P
   case 2
     RR = P : GG = V : BB = T
   case 3
     RR = P : GG = Q : BB = V
   case 4
     RR = T : GG = P : BB = V
   case 5
     RR = V : GG = P : BB = Q
 end_select

 RGB_R% = int(RR * 255)
 RGB_G% = int(GG * 255)
 RGB_B% = int(BB * 255)

end_sub

sub RGBtoHex(R%, G%, B%)
' Convertit le code RGB en une chaine de 6 caracteres ("0A0BCC" ...)
' Resultat dans RGB_Hex$

 dim_local RH$, GH$, BH$
 
 RH$ = Hex$(R%) : if R% < 16 then RH$ = "0" + RH$
 GH$ = Hex$(G%) : if G% < 16 then GH$ = "0" + GH$
 BH$ = Hex$(B%) : if B% < 16 then BH$ = "0" + BH$
 
 RGB_Hex$ = RH$ + GH$ + BH$

end_sub
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conversion RGB/HSV Empty
MessageSujet: Re   Conversion RGB/HSV EmptySam 21 Sep 2013 - 12:17

cheers Super !

Une petite remarque tout de même.
Il serait bien que la couleur du picture évolue avec le réglage par les "Spin"
au lieu des boutons de conversion.
La visualisation peut permettre le choix de la couleur avant de convertir son code.


Ceci dit, je garde ! Très pratique quand on s' amuse à modifier des fichiers html et autres.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 21 Sep 2013 - 12:28

C'est clair, de jolies sub à rajouter sur le site et qui évitent de passer par une dll externe    Wink
Je pense que ces sub seraient bien dans la collection sur le site
Revenir en haut Aller en bas
Mumu




Nombre de messages : 176
Localisation : 45
Date d'inscription : 20/12/2012

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 21 Sep 2013 - 15:03

Pas mal du tout... Merci j'archive
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 21 Sep 2013 - 20:58

Conversion très utile, mais je suis de l'avis de Ygeronimi pour que la couleur évolue en temps réel.
C'est néanmoins un programme intéressant qui inclus en plus des couleurs, les teintes et saturations.
Bravo Jean

A+
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conversion RGB/HSV Empty
MessageSujet: re   Conversion RGB/HSV EmptyLun 23 Sep 2013 - 17:50

Sub RGBtoHex(R%,G%,B%) est sur le site
Je vais voir pour les autres...Very Happy
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conversion RGB/HSV Empty
MessageSujet: re   Conversion RGB/HSV EmptyLun 23 Sep 2013 - 19:40

Bon, c' est fait, les trois subs sont sur le site !

Je les ai un peu modifier (les variables sont déclarés par la sub ) 
pour les rendre autonomes...Embarassed 

elles sont dans deux catégories, "Colorisation" et "Conversions".
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptyMar 24 Sep 2013 - 8:48

Merci, Ygeronimi Smile

J'avais regardé la liste des procédures sur le site du magazine, mais je n'avais rien trouvé sur ce type de conversion. C'est ce qui m'a incité à reprendre un de mes anciens programmes, lequel utilisait une DLL car il n'y avait pas encore de SUBs à l'époque.

Ces procédures seront utilisées dans un article à venir sur la coloration des fractales.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conversion RGB/HSV Empty
MessageSujet: re   Conversion RGB/HSV EmptyMar 24 Sep 2013 - 11:17

Il n' y a pas de quoi ! Very Happy
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptyJeu 24 Oct 2013 - 10:08

Nouvelle version :

1) Il y a 3 fichiers :

   - rgb_vars.inc pour dimensionner les variables globales des procédures
   
   - rgb_subs.inc pour le code des procédures
   
   - rgb_hsv.bas pour le programme de démonstration
   
2) Dans le programme de démo :

   - la couleur et le code hexadécimal sont affichés à chaque modification des spins
   
   - la conversion est faite lorsqu'on clique sur les boutons
   
rgb_vars.inc :
   
Code:

' *******************************************************************
' Variables globales des procedures de conversion RGB/HSV
' *******************************************************************

dim RGB_R%, RGB_G%, RGB_B%   : ' 0..255
dim HSV_H                    : ' 0..360
dim HSV_S, HSV_V             : ' 0..1

dim RGB_Hex$                 : ' Code RGB en hexadecimal (ex. 0A1B2C)

' *******************************************************************
rgb_subs.inc :
   
Code:

' *******************************************************************
' Procedures de conversion RGB/HSV
' *******************************************************************
' Adapte de http://www.cs.rit.edu/~ncs/color/t_convert.html
' R, G, B = [0..255]
' H = [0..360], S = [0..1], V = [0..1]
' si S = 0, H = 0 par defaut
' *******************************************************************

sub RGBtoHSV(R%, G%, B%)
' Conversion RGB --> HSV
' Resultat dans HSV_H, HSV_S, HSV_V

 dim_local RR, GG, BB, Mini, Maxi, Delta

 RR = R% / 255
 GG = G% / 255
 BB = B% / 255

 Mini = RR
 if GG < Mini then Mini = GG
 if BB < Mini then Mini = BB

 Maxi = RR
 if GG > Maxi then Maxi = GG
 if BB > Maxi then Maxi = BB

 HSV_V = Maxi

 if (Maxi = 0) or (Maxi = Mini)
   HSV_S = 0
   HSV_H = 0
   exit_sub
 end_if

 Delta = Maxi - Mini

 HSV_S = Delta / Maxi
 
 if RR = Maxi then HSV_H = (GG - BB) / Delta      : ' entre jaune & magenta
 if GG = Maxi then HSV_H = 2 + (BB - RR) / Delta  : ' entre cyan & jaune
 if BB = Maxi then HSV_H = 4 + (RR - GG) / Delta  : ' entre magenta & cyan

 HSV_H = HSV_H * 60
 if HSV_H < 0 then HSV_H = HSV_H + 360            : ' degres

end_sub

sub HSVtoRGB(H, S, V)
' Conversion HSV --> RGB
' Resultat dans RGB_R%, RGB_G%, RGB_B%

 if S = 0
   RGB_R% = int(V * 255)
   RGB_G% = RGB_R%
   RGB_B% = RGB_R%
   exit_sub
 end_if

 dim_local I%, Z, F, P, Q, T, RR, GG, BB

 Z  = H / 60
 I% = int(Z)
 F  = frac(Z)
 P  = V * (1 - S)
 Q  = V * (1 - S * F)
 T  = V * (1 - S * (1 - F))

 select I%
   case 0
     RR = V : GG = T : BB = P
   case 1
     RR = Q : GG = V : BB = P
   case 2
     RR = P : GG = V : BB = T
   case 3
     RR = P : GG = Q : BB = V
   case 4
     RR = T : GG = P : BB = V
   case 5
     RR = V : GG = P : BB = Q
 end_select

 RGB_R% = int(RR * 255)
 RGB_G% = int(GG * 255)
 RGB_B% = int(BB * 255)

end_sub

sub RGBtoHex(R%, G%, B%)
' Convertit le code RGB en une chaine de 6 caracteres ("0A0BCC" ...)
' Resultat dans RGB_Hex$

 dim_local RH$, GH$, BH$
 
 RH$ = Hex$(R%) : if R% < 16 then RH$ = "0" + RH$
 GH$ = Hex$(G%) : if G% < 16 then GH$ = "0" + GH$
 BH$ = Hex$(B%) : if B% < 16 then BH$ = "0" + BH$
 
 RGB_Hex$ = RH$ + GH$ + BH$

end_sub
rgb_hsv.bas

Code:

' *******************************************************************
' Conversion RGB/HSV
' *******************************************************************

' Variables globales des procedures
#include "rgb_vars.inc"

' Variables globales du programme principal
dim R%, G%, B%, H, S, V

' -------------------------------------------
' Description des objets
' -------------------------------------------

' Fenêtre principale

left    0, 220
top     0, 200
width   0, 390
height  0, 250
caption 0, "Conversion HSV / RGB"

' Spins 1-6 (Saisie des données)

spin  1        : ' Teinte (Hue)
left  1, 20
top   1, 30
width 1, 75
min   1, 0
max   1, 360

spin  2        : ' Saturation
left  2, 20
top   2, 80
width 2, 75
min   2, 0
max   2, 100

spin  3        : ' Luminosite (Value)
left  3, 20
top   3, 130
width 3, 75
min   3, 0
max   3, 100

spin  4        : ' Rouge
left  4, 290
top   4, 30
width 4, 75
min   4, 0
max   4, 255

spin  5        : ' Vert
left  5, 290
top   5, 80
width 5, 75
min   5, 0
max   5, 255

spin  6        : ' Bleu
left  6, 290
top   6, 130
width 6, 75
min   6, 0
max   6, 255

' Boutons 7-8 (Conversions)

button  7
left    7, 20
top     7, 180
caption 7, "HSV --> RGB"

button  8
left    8, 290
top     8, 180
caption 8, "RGB --> HSV"

' Label 9 (Affichage de la couleur)

alpha  9
left   9, 120
top    9, 10
width  9, 140
height 9, 150
color  9, 0, 0, 0

' Labels 10-16 (Etiquettes)

alpha   10
left    10, 120
top     10, 185
width   10, 140
height  10, 25
caption 10, "Hexadécimal"

alpha   11
left    11, 20
top     11, 10
width   11, 75
caption 11, "Teinte (H)"

alpha   12
left    12, 20
top     12, 60
width   12, 75
caption 12, "Saturation (S)"

alpha   13
left    13, 20
top     13, 110
width   13, 75
caption 13, "Luminosité (V)"

alpha   14
left    14, 290
top     14, 10
width   14, 75
caption 14, "Rouge (R)"

alpha   15
left    15, 290
top     15, 60
width   15, 75
caption 15, "Vert (G)"

alpha   16
left    16, 290
top     16, 110
width   16, 75
caption 16, "Bleu (B)"

' Edit 17 (Code hexadecimal)

edit  17
left  17, 190
top   17, 180
width 17, 70

' ----------------------------------------------
' Affectation des sous-programmes aux événements
' ----------------------------------------------

label Show_HSV, Show_RGB, HSV_RGB, RGB_HSV

on_change 1, Show_HSV
on_change 2, Show_HSV
on_change 3, Show_HSV

on_change 4, Show_RGB
on_change 5, Show_RGB
on_change 6, Show_RGB

on_click 7, HSV_RGB
on_click 8, RGB_HSV

' -------------------------------------------
' Fin du programme principal
' -------------------------------------------

end

' -------------------------------------------
' Sous-programmes
' -------------------------------------------

Show_HSV:
 H = position(1)
 S = position(2) / 100
 V = position(3) / 100

 HSVtoRGB(H, S, V)
 RGBtoHex(RGB_R%, RGB_G%, RGB_B%)

 color 9, RGB_R%, RGB_G%, RGB_B%
 text 17, "#" + RGB_Hex$
return

Show_RGB:
 R% = position(4)
 G% = position(5)
 B% = position(6)

 RGBtoHex(R%, G%, B%)

 color 9, R%, G%, B%
 text 17, "#" + RGB_Hex$
return

HSV_RGB:
 HSVtoRGB(H, S, V)
 position 4, RGB_R%
 position 5, RGB_G%
 position 6, RGB_B%
return

RGB_HSV:
 RGBtoHSV(R%, G%, B%)
 position 1, int(HSV_H)
 position 2, int(100 * HSV_S)
 position 3, int(100 * HSV_V)
return

' -------------------------------------------
' Procedures
' -------------------------------------------

#include "rgb_subs.inc"
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 26 Oct 2013 - 11:00

Un autre petit programme de démonstration.

Celui-ci génère un gradient de couleurs en faisant varier la teinte (H) tout en maintenant constantes la saturation (S) et la luminosité (V).

On peut bien sûr adapter le programme pour faire varier l'un quelconque des 3 paramètres.

Code:

' *******************************************************************
' Gradient de couleurs
' *******************************************************************

' Variables globales des procedures
#include "rgb_vars.inc"

' Variables globales du programme
dim x%, xmax%, ymax%, H, Hmin, Hmax, Scale, S, V

xmax% = 400
ymax% = 40

' -------------------------------------------
' Description des objets
' -------------------------------------------

' Fenêtre principale

left    0, 200
top     0, 200
width   0, xmax% + 30
height  0, ymax% + 60
caption 0, "Gradient de couleurs"

picture 1
left    1, 10
top     1, 10
width   1, xmax%
height  1, ymax%

' -------------------------------------------
' Programme principal
' -------------------------------------------

' Ici on fait varier la teinte (H) de Hmin à Hmax
' La saturation (S) et la luminosité (V) ont leur valeur maximale (1)

Hmin = 0
Hmax = 360

S = 1
V = 1

Scale = (Hmax - Hmin) / xmax%

2d_target_is 1

for x% = 1 to xmax%
 H = Hmin + x% * Scale
 HSVtoRGB(H, S, V)
 2d_pen_color RGB_R%, RGB_G%, RGB_B%
 2d_line x%, 1, x%, ymax%
next x%

end

' -------------------------------------------
' Procedures
' -------------------------------------------

#include "rgb_subs.inc"
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conversion RGB/HSV Empty
MessageSujet: re   Conversion RGB/HSV EmptySam 26 Oct 2013 - 13:26

Cela donne un superbe effet.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conversion RGB/HSV Empty
MessageSujet: re   Conversion RGB/HSV EmptySam 26 Oct 2013 - 13:27

Cela donne un superbe effet.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 26 Oct 2013 - 16:18

Reponse depuis mon S3, panne internet au moins jusqu a lundi donc pas de testd et apres deplacement a Nantes puis week end a Rennes. Je ne vais pas pouvoir tester bcp...
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 2 Nov 2013 - 8:58

Voici le generateur de gradient sous forme de SUB (à ajouter à rgb_subs.inc)

Code:

sub HSV_Gradient(Object%, Orient%, iP%, Pmin, Pmax, PC1, PC2)
' Dessine un gradient de couleurs en faisant varier un des
' parametres H, S ou V tout en maintenant les 2 autres constants

' Object%    = numero de l'objet sur lequel on dessine
' Orient%    = orientation du gradient : 1 = vertical, 2 = horizontal
' iP%        = indice du parametre variable : 1 = H, 2 = S, 3 = V
' Pmin, Pmax = bornes du parametre variable
' PC1, PC2   = valeurs des parametres constants (dans l'ordre H, S, V)

  dim_local h%, w%, i%, imax%, Scale, P

  h% = height(Object%)
  w% = width(Object%)

  select Orient%
    case 1 : imax% = w%
    case 2 : imax% = h%
  end_select

  Scale = (Pmax - Pmin) / imax%

  2d_target_is Object%

  for i% = 0 to imax%
    P = Pmin + i% * Scale

    if iP% = 1
        HSVtoRGB(P, PC1, PC2)
    else
      if iP% = 2
        HSVtoRGB(PC1, P, PC2)
      else
        HSVtoRGB(PC1, PC2, P)
      end_if
    end_if

    2d_pen_color RGB_R%, RGB_G%, RGB_B%

    select Orient%
      case 1 : 2d_line i%, 0, i%, h%
      case 2 : 2d_line 0, i%, w%, i%
    end_select
  next i%
end_sub
Le programme de test devient alors très simple :

Code:

' *******************************************************************
' Gradient de couleurs
' *******************************************************************

' Variables globales des procedures
#include "rgb_vars.inc"

' Variables globales du programme (dimensions de l'image)
dim xmax%, ymax%

xmax% = 300
ymax% = 300

' -------------------------------------------
' Description des objets
' -------------------------------------------

' Fenêtre principale

left    0, 200
top     0, 200
width   0, xmax% + 30
height  0, ymax% + 60
caption 0, "Gradient de couleurs"

picture 1
left    1, 10
top     1, 10
width   1, xmax%
height  1, ymax%

' -------------------------------------------
' Programme principal
' -------------------------------------------

' Ici on fait varier la teinte (H) de 0 à 360°
' La saturation (S) et la luminosité (V) ont leur valeur maximale (= 1)

HSV_Gradient(1, 1, 1, 0, 360, 1, 1)

file_save 1, "gradient.bmp"

end

' -------------------------------------------
' Procedures
' -------------------------------------------

#include "rgb_subs.inc"
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptySam 2 Nov 2013 - 18:21

OK, je vois ça demain soir en rentrant Wink
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptyMer 20 Nov 2013 - 9:47

Voici le programme de gradient réécrit avec les procédures KGF_OBJ de Klaus. Cela marche très bien Smile

Code:

' *******************************************************************
' Gradient de couleurs
' *******************************************************************

' Variables globales des procedures RGB/HSV
#include "rgb_vars.inc"

' Variable globale de KGF_OBJ
dim no%

' Variables globales du programme
dim xmax%, ymax%, NumPic%

xmax% = 300
ymax% = 300

' -------------------------------------------
' Description des objets
' -------------------------------------------

' Fenetre principale

top    0, 100
left    0, 100
width  0, xmax% + 30
height  0, ymax% + 60
caption 0, "Gradient de couleurs"

' Picture

xPicture(10, 10, xmax%, ymax%, 0)

NumPic% = no%

' -------------------------------------------
' Programme principal
' -------------------------------------------

' Ici on fait varier la teinte (H) de 0 à 360°
' La saturation (S) et la luminosité (V) ont leur valeur maximale (= 1)

HSV_Gradient(NumPic%, 1, 1, 0, 360, 1, 1)

file_save NumPic%, "gradient.bmp"

end

' -------------------------------------------
' Procedures
' -------------------------------------------

#include "rgb_subs.inc"
#include "KGF_OBJ.bas"
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV EmptyDim 24 Nov 2013 - 10:50

Voici une version légèrement modifiée du programme de conversion, avec les procédures de Klaus.
Code:

' *******************************************************************
' Conversion RGB/HSV
' *******************************************************************

' Variables globales des procedures
#include "rgb_vars.inc"

' Variables globales du programme principal
dim R%, G%, B%, H, S, V

' -------------------------------------------
' Description des objets
' -------------------------------------------

' Fenêtre principale (0)

top     0, 200
left    0, 220
width   0, 390
height  0, 250
caption 0, "Conversion HSV / RGB"

' Spins 1-6 (Saisie des données)

xSpin( 30,  20, 75, 0, 0, 360)  : ' (1) Teinte (Hue)
xSpin( 80,  20, 75, 0, 0, 100)  : ' (2) Saturation
xSpin(130,  20, 75, 0, 0, 100)  : ' (3) Luminosite (Value)
xSpin( 30, 290, 75, 0, 0, 255)  : ' (4) Rouge
xSpin( 80, 290, 75, 0, 0, 255)  : ' (5) Vert
xSpin(130, 290, 75, 0, 0, 255)  : ' (6) Bleu

' Boutons 7-8 (Conversions)

xButton(180,  20, 75, 0, "HSV --> RGB")
xButton(180, 290, 75, 0, "RGB --> HSV")

' Picture 9 (Affichage de la couleur)

xPicture(10, 120, 140, 150, 0)

' Labels 10-16 (Etiquettes)

xAlpha(185, 120, 0, 8, "Hexadécimal")
xAlpha( 10,  20, 0, 8, "Teinte (H)")
xAlpha( 60,  20, 0, 8, "Saturation (S)")
xAlpha(110,  20, 0, 8, "Luminosité (V)")
xAlpha( 10, 290, 0, 8, "Rouge (R)")
xAlpha( 60, 290, 0, 8, "Vert (G)")
xAlpha(110, 290, 0, 8, "Bleu (B)")

' Edit 17 (Code hexadecimal)

xEdit(180, 190, 70, 0, 1)

' ----------------------------------------------
' Affectation des sous-programmes aux événements
' ----------------------------------------------

label Show_HSV, Show_RGB, HSV_RGB, RGB_HSV

on_change 1, Show_HSV
on_change 2, Show_HSV
on_change 3, Show_HSV

on_change 4, Show_RGB
on_change 5, Show_RGB
on_change 6, Show_RGB

on_click 7, HSV_RGB
on_click 8, RGB_HSV

' -------------------------------------------
' Programme principal
' -------------------------------------------

' Demarrer avec un rouge vif

position 1, 0    : ' H
position 2, 100  : ' S (%)
position 3, 100  : ' V (%)
position 4, 255  : ' R
position 5, 0    : ' G
position 6, 0    : ' B

gosub Show_RGB

end

' -------------------------------------------
' Sous-programmes
' -------------------------------------------

Show_HSV:
  H = position(1)
  S = position(2) / 100
  V = position(3) / 100

  HSVtoRGB(H, S, V)
  RGBtoHex(RGB_R%, RGB_G%, RGB_B%)

  color 9, RGB_R%, RGB_G%, RGB_B%
  text 17, "#" + RGB_Hex$
return

Show_RGB:
  R% = position(4)
  G% = position(5)
  B% = position(6)

  RGBtoHex(R%, G%, B%)

  color 9, R%, G%, B%
  text 17, "#" + RGB_Hex$
return

HSV_RGB:
  HSVtoRGB(H, S, V)
  position 4, RGB_R%
  position 5, RGB_G%
  position 6, RGB_B%
return

RGB_HSV:
  RGBtoHSV(R%, G%, B%)
  position 1, int(HSV_H)
  position 2, int(100 * HSV_S)
  position 3, int(100 * HSV_V)
return

' -------------------------------------------
' Procedures
' -------------------------------------------

#include "rgb_subs.inc"
#include "KGF_OBJ.bas"
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé





Conversion RGB/HSV Empty
MessageSujet: Re: Conversion RGB/HSV   Conversion RGB/HSV Empty

Revenir en haut Aller en bas
 
Conversion RGB/HSV
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Conversion TSL/RVB
» Conversion txt en rtf
» DLL pour conversion TSL / RVB
» CONVERSION DE BASES
» conversion de décimal en rationel

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: