Page 1 sur 2
Tester La Couleur d'une zone d'écran avec une autre
Publié : sam. 25/avr./2020 8:44
par hectorabcd
Bonjour à toutes et tous,
Je voudrais savoir s'il est possible de tester la couleur d'une petite zone d'écran avec une autre petite zone d'écran.
Je vous remercie de votre réponse et de votre attention.
Bonne journée à vous.
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : sam. 25/avr./2020 9:26
par Ollivier
Bonjour Hector,
oui, c'est possible. Tu (je tutoie, sauf si objection) es sous Windows, ou bien sous Linux ?
Cordialement
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : sam. 25/avr./2020 11:37
par hectorabcd
Bonjour Ollivier,
Merci pour cette réponse rapide.
Je suis content de savoir que cela est possible.
Je suis sous Windows.
Peux-tu m'indiquer la procédure (ou les instructions) qui permettent de faire cela.
Merci beaucoup.
Bonne journée ensoleillée
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : sam. 25/avr./2020 11:52
par SPH
Oui, avec Point(x,y)
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : sam. 25/avr./2020 12:51
par Ar-S
Bonjour
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 200, 200, "Point", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
Box(0, 0, 100, 200, RGB(255, 0, 0))
Debug "Couleur RGB en 50 x 100: R: "+Red(Point(50, 100)) + " /// G: " + Green(Point(50, 100)) + " /// B: "+ Blue(Point(50, 100))
Debug "Couleur RGB en 150 x 100: R: "+Red(Point(150, 100)) + " /// G: " + Green(Point(150, 100)) + " /// B: "+ Blue(Point(150, 100))
; dessin d'un pixel rouge et noir sur les couleurs opposées
Plot(50,100,$0)
Plot(150,100,$0000FF)
Debug ""
Debug " Note qu'en PB, si tu souhaites écrire une couleur (commande Plot() ), il faut l'ecrire dans l'ordre BGA et non en RGB"
Debug " Ce qui donne pour le rouge $0000FF et non $FF0000"
StopDrawing()
ImageGadget(0, 0, 0, 200, 200, ImageID(0))
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 10:07
par hectorabcd
Bonjour à tous,
Merci de vos réponses.
Je viens de voir la commande point(x,y). Je ne connais pas la structure logique de Purebasic pour la gestion graphique. Cela me semble confus.
Je voudrais simplement tester deux petites zones de l'écran (via deux simili-captures d'écran) et tester leur couleur (pour savoir si ce sont les mêmes couleurs ou pas).
L'aide de Purebasic donne un exemple (point(x,y) mais avec création d'une boite de dessin, je veux simplement tester l'écran brut.
Merci de me préciser si cela est possible.
A bientôt de vous lire et bon dimanche.
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 10:31
par Ar-S
Salut,
Si tu as 2 captures d'ecrans, tu charges ton/tes images, tu fais loadimage() au lieu d'un create image...
Mon exemple précédent montre visuellement le truc mais pas besoin d'afficher quoi que ce soit..
Tu dois faire appelle à StartDrawing(ImageOutput(0)) pour utiliser Point mais tu n'est pas obliger de dessiner dessus ou de l'afficher
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 128, 128, "FreeImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
LoadImage(0, #PB_Compiler_Home + "Examples\Sources\Data\GeeBee2.bmp") ; Charge l'image depuis un fichier
StartDrawing(ImageOutput(0))
Debug "la couleur en x20 y20 est RGB( "+ Str(Red(Point(20,20))) +","+ Str( Green(Point (20,20))) + "," + Str(Blue(Point(20,20)))+")"
StopDrawing()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 11:24
par hectorabcd
Merci Ar-S,
Mais je ne veux pas charger des images depuis un (ou des) fichier(s).
C'est sur l'écran directement que je veux faire deux zones à capturer.
Est-ce possible?
Merci beaucoup

Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 11:59
par Ollivier
Puisque je te dis que c'est possible ! Avec une API, donc, faut la licence... T'as la licence, c'est bon ?
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 13:39
par Ar-S
Faut être plus précis dans vos demandes svp...
Quand tu dis écran c'est ecran d'une fenêtre d'un prog externe? du bureau ?
Dans tous les cas, comme l'a dit Ollivier c'est possible car PB gère les API de windows donc tu peux utiliser les API de capture de pixel comme GetPixel_(). Il te faudra aussi récupérer le Handle de la denêtre cible que tu cherches "pixelcapturer"..
Mais la version demo de PB ne prend pas en charge la gestion des API.
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 14:45
par hectorabcd
Excuse-moi pour l'explication pas assez précise.
C'est l'écran d'une fenêtre d'un programme externe.
J'ai la licence PB depuis plus de dix ans (2007 je crois). Aucun problème
Je regarde le GetPixel() et le Handle de la fenêtre cible et j'essaie ....
Merci beaucoup.
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 14:57
par hectorabcd
Oh pardon je n'ai pas bien compris, c'est une licence API dont tu parles.
Mais là je suis largué. Je n'y connais rien du tout.
Est-ce compliqué ?
Merci de ta réponse.
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : dim. 26/avr./2020 15:38
par Ollivier
Non non c'est juste la licence PB. Elle permet d'appeler une fonction API.
On rajoute un tiret du 8 derrière le nom de la fonction, et on peut l'appeler.
Alors GetPixel semble récuperer le pixel d'un bitmap. Mais il y a une fonction plus rapide pour récupérer tout l'écran.
J'avais pondu un code pour récupérer une zone sélectionnée avec la souris. Et j'ai dû la publier en 2008. Mais je crois que je l'avais publié dans la section Hors Sujet qui a été sautée pour une banale histoire de n'importe quoi.
Ce n'est pas grave mais ça fait du boulot en plus. Ça fait chercher dans Archive.org et là, c'est moi qui suis largué !
Si quelqu'un a des idées, il y a plusieurs codes qui ont été faits et qui récupèrent l'écran (le bureau en cours).
Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : lun. 27/avr./2020 0:07
par hectorabcd
Bonjour,
j'ai essayé ce bout de code, ca fonctionne (il ne me reste plus qu'à trouver la capture écran)
voila :
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 1535,863, "FreeImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
LoadImage(0, "c:\essai\GeeBee5.bmp") ; Charge l'image depuis un fichier
; UseJPEGImageDecoder()
StartDrawing(ImageOutput(0))
Debug "la couleur en x20 y20 est RGB( "+ Str(Red(Point(98,101))) +","+ Str( Green(Point (98,101))) + "," + Str(Blue(Point(98,101)))+")"
Debug "la couleur en x20 y20 est RGB( "+ Str(Red(Point(330,154))) +","+ Str( Green(Point (330,154))) + "," + Str(Blue(Point(330,154)))+")"
StopDrawing()
CloseWindow(0)
; Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
====
Merci beaucoup

Re: Tester La Couleur d'une zone d'écran avec une autre
Publié : lun. 27/avr./2020 0:18
par SPH
Tu as une facon tres particuliere de coder (j'avais jamais vu ca)
Sache que les Point(x,y) prennent plus de temps machine que des dim
Quand tu presente un code, utilise la balise "Code"
exemple :
