Page 1 sur 1

[R] Comparaison de pixels

Posté : jeu. 25 sept. 2008 11:34
par galloche
bonjour,

je souhaite comparer deux pixels. l'un venant d'une fenêtre l'autre venant d'une image pré-enregistrée. Ceci dans le but de définir si la fenêtre ouverte est bien la bonne ou non.

Voici mon code :

Code : Tout sélectionner

run ("appli.exe")

WinWaitActive("appli")

;$coord = PixelGetColor (40,585)

;$coord1 = PixelGetColor (40,585,"c:\Documents and settings\admin\bureau\autoit\script\appli2.jpg")

MsgBox (1,"titre", $coord & @CRLF & @CRLF & $coord1)

If $coord = $coord1 then
    MsgBox (1,"titre", "test OK")
else
    MsgBox (1,"titre","Test KO")
EndIf
 
Le problème est que les deux images comparées sont différentes. Mais le test me renvoie le meme code couleur pour les deux pixels : 8487297 et test OK

Or j'ai fait exprès de mettre une image différente de la fenêtre ouverte pour vérifier si le test est bon.

pourriez vous m'aider dans mon problème???

Merci. Cordialement.

Re: [..] Comparaison de pixels

Posté : jeu. 25 sept. 2008 15:32
par jbnh

Code : Tout sélectionner

$coord1 = PixelGetColor (40,585,"c:\Documents and settings\admin\bureau\autoit\script\appli2.jpg")
 
n'est pas correct.

Code : Tout sélectionner

PixelGetColor ( x , y [, hwnd] )
Hwnd signifie le nom de la fenêtre ou détecter le pixel.

Il faut donc ouvrir l'image avec un logiciel puis prendre le pixel.

Re: [..] Comparaison de pixels

Posté : jeu. 25 sept. 2008 16:35
par tolf
jbnh a écrit :Il faut donc ouvrir l'image avec un logiciel puis prendre le pixel.
Il est possible de connaître la couleur d'un pixel d'une image directement avec AutoIt en utilisant GDI+ :

Code : Tout sélectionner

#Include <GDIPlus.au3>

_GDIPlus_Startup()
$h_image = _GDIPlus_ImageLoadFromFile("c:\Documents and settings\admin\bureau\autoit\script\appli2.jpg")
$color = GDIPlus_BitmapGetPixel($h_image, 40, 585)
_GDIPlus_ImageDispose($h_image)
_GDIPlus_Shutdown()

Func GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY)
    Local $tArgb, $pArgb, $aRet
    $tArgb = DllStructCreate("dword Argb")
    $pArgb = DllStructGetPtr($tArgb)
    $aRet = DllCall($ghGDIPDll, "int", "GdipBitmapGetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "ptr", $pArgb)
    Return "0x" & Hex(DllStructGetData($tArgb, "Argb"))
EndFunc   ;==>GDIPlus_BitmapGetPixel
Pour plus d'informations, vous pouvez regarder ici

Re: [..] Comparaison de pixels

Posté : jeu. 25 sept. 2008 16:49
par jbnh
Faudra que je m'y mette au GDIplus, ca a l'air interessant :)

Re: [..] Comparaison de pixels

Posté : jeu. 25 sept. 2008 17:28
par galloche
Oki cest bon pour moi.
merci encore :)