Comment changer la Teinte Globale d'une image...
Comment changer la Teinte Globale d'une image...
Salut,
J'aimerais savoir comment ont fait pour changer la Teinte Globale d'une image, je sais pas si je suis clair donc voilà se que je veux faire avec PB:
http://www.aht.li/3060923/bandicam_2017 ... 46-144.avi
J'aimerais savoir comment ont fait pour changer la Teinte Globale d'une image, je sais pas si je suis clair donc voilà se que je veux faire avec PB:
http://www.aht.li/3060923/bandicam_2017 ... 46-144.avi
Dernière modification par Shadow le jeu. 04/mai/2017 22:18, modifié 3 fois.
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.
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.
Re: Comment changer la Teinte Globale d'une image...
Tout dépend de comment tu crées et comment tu affiches ton image..
Si tu veux de la modif en temps réel comme sur ta video, je te conseils de faire 3 TrackBarGadget()
Une pour le R une pour le G une pour le B... Que tu initialises de 0 à 255
Quand tu bouges un des curseurs tu modifies l'affichage de ton bouton en directe..
Il y a surement plein d'exemples sur le forum.
Si tu veux de la modif en temps réel comme sur ta video, je te conseils de faire 3 TrackBarGadget()
Une pour le R une pour le G une pour le B... Que tu initialises de 0 à 255
Quand tu bouges un des curseurs tu modifies l'affichage de ton bouton en directe..
Il y a surement plein d'exemples sur le forum.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Comment changer la Teinte Globale d'une image...
Salut,
Je ne veux pas faire un logiciel, je veux une procédure qui change les couleurs
Merci quand même.
Je ne veux pas faire un logiciel, je veux une procédure qui change les couleurs

Merci quand même.
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.
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.
Re: Comment changer la Teinte Globale d'une image...
Sérieux... Tu peux pas être moins précis?
Tout dépend de comment tu comptes colorer tes boutons...
Si tu les dessines dans un canvas ou pas, dans un screen ? etc...
Dans TOUS les cas tu changes les valeurs RGB... Je vois pas le soucis.
Exemple à l'arrache pour modifier la valeur du rouge..
Tout dépend de comment tu comptes colorer tes boutons...
Si tu les dessines dans un canvas ou pas, dans un screen ? etc...
Dans TOUS les cas tu changes les valeurs RGB... Je vois pas le soucis.
Exemple à l'arrache pour modifier la valeur du rouge..
Code : Tout sélectionner
Enumeration GUI
#LDVM
#CANVAS
#T_RED
EndEnumeration
Lwin = 350 : Hwin = 100
Global Canvas_MAX_L = Lwin - 101
Global Canvas_MAX_H = Hwin
; ********************* PROGRAMME **********************
hwnd = OpenWindow(#LDVM, #PB_Any, #PB_Any, Lwin, Hwin, "by Ar-S // 2017", #PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
CanvasGadget(#CANVAS, 101, 1, Canvas_MAX_L, Canvas_MAX_H , #PB_Canvas_DrawFocus|#PB_Canvas_ClipMouse)
StartDrawing(CanvasOutput(#CANVAS))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0,0, Canvas_MAX_L, Canvas_MAX_H, $FFFFFF)
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(5,5, "Vide", $0)
StopDrawing()
TrackBarGadget(#T_RED, 1, 20, 100, 25, 0, 255) ;
; Position trackBar Couleurs
SetGadgetState(#T_RED, 200) ; on initialise à 200 le rouge
; initialisation du 1er affichage
RED_VAL.i = GetGadgetState(#T_RED)
StartDrawing(CanvasOutput(#CANVAS))
Box(0,0,Canvas_MAX_L,Canvas_MAX_H,$0)
DrawText(5,5, "VARIANTE ROUGE", RGB(RED_VAL,0,0) )
StopDrawing()
; ************ EVENT et BOUCLE **********************
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #T_RED ;- SI on bouge la trackbar, on change la variante rouge
RED_VAL.i = GetGadgetState(#T_RED)
StartDrawing(CanvasOutput(#CANVAS))
Box(0,0,Canvas_MAX_L,Canvas_MAX_H,$0)
DrawText(5,5, "VARIANTE ROUGE", RGB(RED_VAL,0,0) )
StopDrawing()
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #LDVM
quite=1
EndSelect
EndSelect
Until quite=1
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment changer la Teinte Globale d'une image...
Un sujet pour t'aider http://www.purebasic.fr/french/viewtopi ... 27#p160527
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 changer la Teinte Globale d'une image...
Merci Ar'S,
Oui, sur une image
Merci Falsam.
Oui, sur une image

Merci Falsam.
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.
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.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment changer la Teinte Globale d'une image...
Il y a des choses interessantes dans ce post de BasicallyPure sur le forum anglophone.
http://forum.purebasic.com/english/view ... 2a#p482309
J'ai pris une partie de son code pour teinter une image.
■ Objectif.
- Choisir une image.
- Sélectionner la couleur de teinture.
- Teinter l'image.
- Afficher le résultat.C'est pas mal 

J'ai pris une partie de son code pour teinter une image.
■ Objectif.
- Choisir une image.
- Sélectionner la couleur de teinture.
- Teinter l'image.
- Afficher le résultat.
Code : Tout sélectionner
EnableExplicit
;Plan de l'application
Declare Start()
Declare TintImage(Image, Color)
Declare Exit()
Start()
Procedure Start()
Protected FileName.s, Image, Color = RGB(169, 169, 169)
UseJPEGImageDecoder()
UsePNGImageDecoder()
OpenWindow(0, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(0, 0, 0, 800, 600, 0)
;Choisir une image
FileName = OpenFileRequester("Choisir une image", "", "", 0)
If FileName
Image = LoadImage(-1, FileName)
If image
;Choisir la couleur de teinte
Color = ColorRequester()
EndIf
TintImage(Image, Color)
SetGadgetState(0, ImageID(Image))
EndIf
;Triggers
BindEvent(#PB_Event_CloseWindow, @Exit())
Repeat : WaitWindowEvent() : ForEver
EndProcedure
Procedure TintImage(Image, Color)
Protected c, i, x, y, width, height
Protected.d r, g, b
r = Red(color) / 1785
g = Green(color) / 1785
b = Blue(color) / 1785
If IsImage(Image)
StartDrawing(ImageOutput(Image))
width = OutputWidth() - 1
height = OutputHeight() - 1
For y = 0 To height
For x = 0 To width
c = Point(x, y)
i = (c & $FF) << 1 : c >> 8
i + (C & $FF) << 2 : c >> 8
i + (c & $FF) : c >> 8
Plot(x, y, RGBA(r*i, g*i, b*i, c))
Next x
Next y
StopDrawing()
EndIf
EndProcedure
Procedure Exit()
End
EndProcedure

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 changer la Teinte Globale d'une image...
Ah oui pas mal du tout même !
Merci Falsam
Merci Falsam

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.
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.
Re: [Résolu] Comment changer la Teinte Globale d'une image..
Hum, en faite ça ne me conviens pas
Je voudrait comme sur ma vidéo...

Je voudrait comme sur ma vidéo...
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.
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.
Re: Comment changer la Teinte Globale d'une image...
Comme d'habitude tu captures les pixels dans un tableau et tu modifier leur couleur..
Tu as tout ce qu'il te faut sur le forum même des sujets où tu étais présent. Procédure tabpixel ou un truc comme ça que j'ai posté plusieurs fois.
Tu as tout ce qu'il te faut sur le forum même des sujets où tu étais présent. Procédure tabpixel ou un truc comme ça que j'ai posté plusieurs fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Résolu] Comment changer la Teinte Globale d'une image..
mais quel raleur celui là. En fait tu veux une solution clé en mainShadow a écrit :Hum, en faite ça ne me conviens pas![]()
Je voudrait comme sur ma vidéo...

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%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment changer la Teinte Globale d'une image...
Et bien voila une solution qui ne demande qu'à être fignoler.
Code : Tout sélectionner
EnableExplicit
Global Image
;Plan de l'application
Declare Start()
Declare CButton(w, h, text.s, BackColor, Color)
Declare OnChange()
Declare ColorTint(Color, Scale.f)
Declare Exit()
Start()
Procedure Start()
OpenWindow(0, 0, 0, 800, 600, "Création d'un bouton", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
FrameGadget(-1, 20, 20, 380, 200, "Avant")
ImageGadget(0, 40, 40, 0, 0, 0)
FrameGadget(-1, 405, 20, 380, 200, "Aprés")
ImageGadget(1, 425, 40, 0, 0, 0)
TrackBarGadget(2, 196, 250, 400, 26, 0, 200)
SetGadgetState(2, 100)
TextGadget(3, 196, 280, 400, 22, "", #PB_Text_Center)
;Triggers
BindGadgetEvent(2, @OnChange())
BindEvent(#PB_Event_CloseWindow, @Exit())
Image = CButton(120, 30, "Mon button", RGB(255, 215, 0), RGB(255, 255, 255))
SetGadgetState(0, ImageID(Image))
OnChange()
Repeat : WaitWindowEvent() : ForEver
EndProcedure
;Création d'un bouton
Procedure CButton(w, h, text.s, BackColor, Color)
Protected tw, th
Protected Image = CreateImage(-1, w, h, 32, RGB(169, 169, 169))
StartDrawing(ImageOutput(Image))
DrawingMode(#PB_2DDrawing_Gradient)
FrontColor(Color)
BackColor(BackColor)
LinearGradient(w/2, 0, w/2, h)
RoundBox(0, 0, w, h, 4, 4)
DrawingMode(#PB_2DDrawing_Outlined)
RoundBox(0, 0, w, h, 4, 4, RGB(0, 0, 0))
DrawingMode(#PB_2DDrawing_Transparent)
tw = TextWidth(text)
th = TextHeight(text)
If tw < w And th < h
DrawText((w-tw)/2, (h-th)/2, text, RGB(255, 0, 0))
EndIf
StopDrawing()
ProcedureReturn Image
EndProcedure
;La valeur du trackbar a changé
Procedure OnChange()
Protected Scale.f = GetGadgetState(2)/100 - 1
Protected c, x, y, width, height
Protected ImageResult
SetGadgetText(3, StrF(Scale))
CopyImage(Image, ImageResult)
StartDrawing(ImageOutput(ImageResult))
width = OutputWidth() - 1
height = OutputHeight() - 1
For y = 0 To height
For x = 0 To width
c = Point(x, y)
ColorTint(c, Scale)
Plot(x, y, ColorTint(c, Scale))
Next x
Next y
StopDrawing()
SetGadgetState(1, ImageID(ImageResult))
EndProcedure
; Changer la teinte d'une couleur (Echelle comprise entre -1 et 1)
Procedure ColorTint(Color, Scale.f)
Protected Red, Green, Blue
Red = Red(Color)
Green = Green(Color)
Blue = Blue(Color)
If Scale > 0
Red = Red * (1 - Scale) + Blue * Scale
Green = Green * (1 - Scale) + Red * Scale
Blue = Blue * (1 - Scale) + Green * Scale
Else
Red = Red * (1 + Scale) - Green * Scale
Green = Green * (1 + Scale) - Blue * Scale
Blue = Blue * (1 + Scale) - Red * Scale
EndIf
ProcedureReturn RGB(Red, Green, Blue)
EndProcedure
Procedure Exit()
End
EndProcedure
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 changer la Teinte Globale d'une image...
Jolie Falsam, merci !
Par contre les couleurs s’assombrisse c'est normale ?

Par contre les couleurs s’assombrisse c'est normale ?
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.
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.
Re: Comment changer la Teinte Globale d'une image...
salut,
ma contribution :
j'ai fais quelques fonction de gestion des couleurs
en ce qui te concerne, sur la droite y'a 3 petits avions coloré de différentes manieres : blend, add, sub (il manque l’addition signée)
note :en déplaçant le scrollbar vertical a droite tu change la composante teinte
ma contribution :
j'ai fais quelques fonction de gestion des couleurs
en ce qui te concerne, sur la droite y'a 3 petits avions coloré de différentes manieres : blend, add, sub (il manque l’addition signée)
note :en déplaçant le scrollbar vertical a droite tu change la composante teinte
Code : Tout sélectionner
Procedure limite(v,min=0,max=255)
If v<min:v=min:EndIf
If v>max:v=max:EndIf
ProcedureReturn v
EndProcedure
Global Dim l255.a(256*3-1):For i=0 To 255:l255(i+256)=i:l255(i+512)=255:Next
Procedure ColorBlend(color1.l, color2.l, blend.f=0.5)
Protected r.w,g.w,b.w,a.w
r= Red(color1) + (Red(color2) - Red(color1)) * blend
g=Green(color1) + (Green(color2) - Green(color1)) * blend
b= Blue(color1) + (Blue(color2) - Blue(color1)) * blend
a=Alpha(color1) + (Alpha(color2) - Alpha(color1)) * blend
ProcedureReturn RGBA(r,g,b,a)
EndProcedure
Procedure ColorAdd(color1.l, color2.l, blend.f=1)
Protected r.w,g.w,b.w,a.w
r= Red(color1) + Red(color1) * blend
g=Green(color1) + Green(color1) * blend
b= Blue(color1) + Blue(color1) * blend
a=Alpha(color1) + Alpha(color1) * blend
ProcedureReturn RGBA(l255(r+256),l255(g+256),l255(b+256),l255(a+256))
EndProcedure
Procedure ColorSub(color1.l, color2.l, blend.f=1)
Protected r.w,g.w,b.w,a.w
r= Red(color1) - Red(color1) * blend
g=Green(color1) - Green(color1) * blend
b= Blue(color1) - Blue(color1) * blend
a=Alpha(color1) - Alpha(color1) * blend
ProcedureReturn RGBA(l255(r+256),l255(g+256),l255(b+256),l255(a+256))
EndProcedure
Procedure DrawingFilter_add(X, Y, cs.l, cd.l)
ProcedureReturn RGBA(l255(Red(cd)+Red(cs)+256),l255(Green(cd)+Green(cs)+256),l255(Blue(cd)+Blue(cs)+256),l255(Alpha(cd)+Alpha(cs)+256))
;ProcedureReturn RGBA(limite(Red(cd)+Red(cs)),limite(Green(cd)+Green(cs)),limite(Blue(cd)+Blue(cs)),limite(Alpha(cd)+Alpha(cs)))
EndProcedure
Procedure DrawingFilter_sub(X, Y, cs, cd)
ProcedureReturn RGBA(l255(Red(cd)-Red(cs)+256),l255(Green(cd)-Green(cs)+256),l255(Blue(cd)-Blue(cs)+256),l255(Alpha(cd)-Alpha(cs)+256))
;ProcedureReturn RGBA(limite(Red(cd)-Red(cs)),limite(Green(cd)-Green(cs)),limite(Blue(cd)-Blue(cs)),limite(Alpha(cd)-Alpha(cs)))
EndProcedure
Procedure.l HSLToRGB(hue.a, saturation.a, lightness.a, alpha=0)
Protected.f h=hue *6/256
Protected.f s=saturation/255
Protected.f l=lightness/255
Protected.f c,x,r_,v_,b_,m
c=(1-Abs(2*l-1))*s
x=c*(1-Abs(Mod(h, 2) -1))
Select Int(h)
Case 0:r_=c:v_=x
Case 1:r_=x:v_=c
Case 2:v_=c:b_=x
Case 3:v_=x:b_=c
Case 4:r_=x:b_=c
Case 5:r_=c:b_=x
EndSelect
m=l-c/2
Protected r,v,b
r=Int((r_+m)*255)
v=Int((v_+m)*255)
b=Int((b_+m)*255)
ProcedureReturn RGBA(r,v,b,alpha)
EndProcedure
Procedure.l RGBToHSL(red.a, green.a, blue.a, alpha=0)
Protected.f r=red/255
Protected.f g=green/255
Protected.f b=blue/255
Protected.f cmax, cmin, h_,c,m,h,s,l
Protected.l imax,imin
If r>=g And r>=b:imax=1:cmax=r:EndIf
If g>=r And g>=b:imax=2:cmax=g:EndIf
If b>=r And b>=g:imax=3:cmax=b:EndIf
If r<=g And r<=b:imin=1:cmin=r:EndIf
If g<=r And g<=b:imin=2:cmin=g:EndIf
If b<=r And b<=g:imin=3:cmin=b:EndIf
c=cmax-cmin
Select imax
Case 1:h_=Mod((g-b)/c+6,6)
Case 2:h_=(b-r)/c+2
Case 3:h_=(r-g)/c+4
EndSelect
h=h_/6
l=(cmax+cmin)/2
If l<>1:s=c/(1-Abs(2*l-1)):Else:s=0:EndIf
ProcedureReturn RGBA(h*255,s*255,l *255,alpha)
EndProcedure
; ==================================== exemple ====================================
Procedure affiche_exemple()
StartDrawing(CanvasOutput(0))
;--------------------- palette HSL
Box(0, 0, 512, 512, $888888)
For j=0 To 255
For i = 0 To 255
Plot(i,j, HSLToRGB(i,j,128))
Next
Next
;--------------------- spheres
DrawingMode(#PB_2DDrawing_Gradient)
Macro sphere
ResetGradientColors()
GradientColor(0.0,HSLToRGB(h,64,200))
GradientColor(0.3,HSLToRGB(h,64,128))
GradientColor(1.0,HSLToRGB(h,64,64))
CircularGradient(x-r*0.3, y+r*1.2+r*0.5,r)
Circle(x,y+r*1.2,r)
ResetGradientColors()
GradientColor(0.0,HSLToRGB(h,255,255))
GradientColor(0.3,HSLToRGB(h,255,128))
GradientColor(1.0,HSLToRGB(h,255,64))
CircularGradient(x-r*0.3, y-r*0.3,r)
Circle(x,y,r)
EndMacro
For j=1 To 4
n=1<<j
For i=0 To n-1
h=(0.5+i)/n*256
r=50/Sqr(n)
r=120/n
x=256+h
y=16*(i & 1)+330-420/Sqr(n)
sphere
Next
Next
;--------------------- filtres blend, add, sub
DrawImage(ImageID(0), 0, 256, 512, 256)
For j=0 To 2
Select j
Case 0:dm.s="Blend":DrawingMode(#PB_2DDrawing_Gradient |#PB_2DDrawing_AlphaBlend)
Case 1:dm.s="Add" :DrawingMode(#PB_2DDrawing_Gradient |#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_add())
Case 2:dm.s="Sub" :DrawingMode(#PB_2DDrawing_Gradient |#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_sub())
EndSelect
For i=0 To 2
x=64+(512-128)*j/2
y=64+256+64*i
ResetGradientColors()
GradientColor(0,$ff000000 |$88<<(i*8))
GradientColor(1,$ff000000)
CircularGradient(x,y,64)
Circle(x,y,64)
Next
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(x,256,dm)
Next
StopDrawing()
EndProcedure
Procedure affiche_geebee()
hue=GetGadgetState(1)
StartDrawing(CanvasOutput(0))
For i=0 To 2
DrawingMode(#PB_2DDrawing_Default )
DrawImage(ImageID(1),512,i*128)
Select i
Case 0:dm.s="Blend":DrawingMode(#PB_2DDrawing_AlphaBlend)
Case 1:dm.s="Add" :DrawingMode(#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_add())
Case 2:dm.s="Sub" :DrawingMode(#PB_2DDrawing_CustomFilter):CustomFilterCallback(@ DrawingFilter_sub())
EndSelect
Box(512,i*128,128,128,HSLToRGB(hue,255,127,127))
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(512,i*128,dm)
Next
StopDrawing()
EndProcedure
OpenWindow(0, 0, 0, 512+128+16, 512, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 512+128, 512)
ScrollBarGadget(1,512+128,0,16,512,0,255,1,#PB_ScrollBar_Vertical)
BindGadgetEvent(1,@ affiche_geebee())
UseJPEGImageDecoder()
LoadImage(0, #PB_Compiler_Home + "Examples/3D/Data/Textures/dirt.jpg")
LoadImage(1, #PB_Compiler_Home + "Examples/3D/Data/Textures/geebee2.bmp")
affiche_exemple()
affiche_geebee()
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow
Re: Comment changer la Teinte Globale d'une image...
Merci beaucoup Guillot 

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.
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.