[UDF] Des fonctions avancées pour la gestion de pixels

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
berthozero
Niveau 2
Niveau 2
Messages : 20
Enregistré le : sam. 16 janv. 2010 22:09
Status : Hors ligne

[UDF] Des fonctions avancées pour la gestion de pixels

#1

Message par berthozero »

Bonjour, voici mes fonctions ...
______________________________________
Nécessite :
#include <Color.au3>
#include <Array.au3>
______________________________________
► Afficher le textePixelSearchList
Cette fonction gère les variations (0-255), permet d'ignorer des pixels (exemple : "9,100|10,100|11,100"), permet de rechercher les pixels dans un rectangle défini et retourne le résultat dans un tableau 2D.

Explication de l'utilisation :

Les 4 premiéres valeurs sont les coordonnées du rectangle de recherche (vous connaissez sans doute), ensuite il faut indiquer la couleur (vous connaissez aussi), ensuite la variation (valeur entre 0 et 255, 0 pour la valeur exacte et 255 pour toutes les couleurs. Je vous conseille de ne pas mettre de variation trop forte pour rester dans de bons résultats), ensuite les exceptions ("x,y|x2,y2", il faut les séparer avec une barre verticale) et pour finir la commande à executer à chaque pixel trouvé (utiliser les mot clé $X et $Y).

Explication du résultat :

$test[0][0] : renvoi le nombre total de pixels trouvés

$test[1][0] : renvoi la valeur x du premier résultat
$test[1][1] : renvoi la valeur y du premier résultat

$test[2][0] : renvoi la valeur x du second résultat
$test[2][1] : renvoi la valeur y du second résultat

Exemple d'utilisation :

Code : Tout sélectionner

$test = PixelSearchList(9, 99, 11, 101, "0xCCCCCC", 0, "9,100|10,100|11,100")
If $test <> 0 Then
    MsgBox(0, "", "Il y a " & $test[0][0] & " résultats.")
    _ArrayDisplay($test)
    For $i = 1 To Ubound($test)-1
        MsgBox(0, "Résultat n°" & $i, "x : " & $test[$i][0] & @CRLF & "y : " & $test[$i][1])
    Next
EndIf
____________________________________________________________________________________________________________________
CreateListByRect permet de créer une liste de pixels à partir de coordonné d'un rectangle. (comptatible avec PixelSearchList et CoordMoreProchByList)
► Afficher le texteCreateListByRect
Exemple d'utilisation :

Code : Tout sélectionner

$machin = PixelSearchList(0, 0, 10, 10, 0x000000, 0, CreateListByRect(3, 3, 5, 10), "MouseMove($X, $Y)")
Ignorera le rectangle rouge :

1 2 3 4 5 6 7 8 9 10
1 OOOOOOOOOO
2 OOOOOOOOOO
3 OOOOOOOOOO
4 OOOOOOOOOO
5 OOOOOOOOOO
6 OOOOOOOOOO
7 OOOOOOOOOO
8 OOOOOOOOOO
9 OOOOOOOOOO
10OOOOOOOOOO
____________________________________________________________________________________________________________________
CoordMoreProchByList retourne le pixel le plus près d'un autre depuis une liste, euh c'est pas claire tous ca ... (Voir exemple d'utilisation)
► Afficher le texteCoordMoreProchByList
Exemple d'utilisation :

Code : Tout sélectionner

$LePlusPres = CoordMoreProchByList(10, 20, "15,18|152,14|48,59")
MsgBox(0, "", $LePlusPres[0] & ", " & $LePlusPres[1])
Parmi les pixels 10,20, 15,80, 152,14 et 48,59 lequel est le plus près des coordonnés 10,20.
____________________________________________________________________________________________________________________
PixelSearchListResultToList permet de convertir un résultat de PixelSearchList en liste pour ensuite pouvoir utiliser avec CoordMoreProchByList (exemple : trouver le pixel bleu le plus près de 600,85) ou pour ignorer les résultats ensuite dans un autre PixelSearchList.
► Afficher le textePixelSearchListResultToList
Exemple d'utilisation :

Code : Tout sélectionner

$test = PixelSearchList(9, 99, 11, 101, "0xCCCCCC", 0, "9,100|10,100|11,100")
If $test <> 0 Then
    MsgBox(0, "Résultat de PixelSearchListResultToList", PixelSearchListResultToList($test))
EndIf
Répondre