Tester La Couleur d'une zone d'écran avec une autre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Tester La Couleur d'une zone d'écran avec une autre

Message 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.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Tester La Couleur d'une zone d'écran avec une autre

Message par Ollivier »

Bonjour Hector,

oui, c'est possible. Tu (je tutoie, sauf si objection) es sous Windows, ou bien sous Linux ?


Cordialement
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Tester La Couleur d'une zone d'écran avec une autre

Message par SPH »

Oui, avec Point(x,y)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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

~~~~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
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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
~~~~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
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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 :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Tester La Couleur d'une zone d'écran avec une autre

Message par Ollivier »

Puisque je te dis que c'est possible ! Avec une API, donc, faut la licence... T'as la licence, c'est bon ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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.
~~~~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
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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.
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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).
hectorabcd
Messages : 14
Inscription : mer. 17/août/2005 9:18

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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 :D :D
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Tester La Couleur d'une zone d'écran avec une autre

Message 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 :

Code : Tout sélectionner

b=2+2
c=2*2
"+"="*" ?
:P

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre