Problème d'identification d'un pixel de couleur noire

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
guigui54
Niveau 1
Niveau 1
Messages : 10
Enregistré le : dim. 29 sept. 2013 21:29
Status : Hors ligne

Problème d'identification d'un pixel de couleur noire

#1

Message par guigui54 »

Bonjour,

Je suis actuellement confronté à un problème lorsque j'utilise la fonction "PixelGetColor", en effet, quand la couleur noire apparaît dans les coordonnées spécifiées dans les paramètres de la fonction, je n'arrive pas à ce que la "couleur" détectée soit reconnue comme noire (absence de couleur). J'ai essayé plusieurs manières de réaliser cette opération (transformation en hexa, ajout d'une chaîne de caractère) mais aucune ne marche. J'ai essayé de chercher sur google mais je n'ai rien trouvé de précis que je ne savais déjà.

J'ai réalisé un script très rapide afin de tester mes différentes transformations et voir s'il en existait une qui pourrait fonctionner, je vous le joins:
Func Couleur()
Local $col
Local $cole
Local $colf
Local $colg
Local $chemin = "Couleurs.txt"
   _FileCreate($chemin)
   While 1
      $col = PixelGetColor(948,204) & @CRLF
      $cole = Hex($col,6) & @CRLF
      $colf = $cole
      $colg = $cole & ""
      FileWrite($chemin,$cole)

      If $cole == 000000 Then
         MsgBox(0,"info", "methode 1 marche")
      EndIf

      If $cole == "000000" Then
         MsgBox(0,"info", "methode 2 marche")
      EndIf

      If $colf == 000000 Then
         MsgBox(0,"info", "methode 3 marche")
      EndIf

      If $colf == "000000" Then
         MsgBox(0,"info", "methode 4 marche")
      EndIf

      If $colg == 000000 Then
         MsgBox(0,"info", "methode 5 marche")
      EndIf

      If $colg == "000000" Then
         MsgBox(0,"info", "methode 6 marche")
      EndIf

      Sleep(100)
   WEnd
EndFunc

Pour l'utiliser, j'allais sur une page de couleur unie et ensuite je changeais pour une page noire et je revenais sur la page unie, ce qui me donne dans mon fichier texte où sont sauvegardées mes couleurs :

A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
000000
000000
000000
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
000000
000000
000000
000000
000000
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
000000
000000
000000
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
000000
000000
000000
000000
000000
A7752C
A7752C
A7752C
A7752C
A7752C
A7752C
000000
000000
000000
000000
000000
000000
000000
000000
000000
000000
000000

On voit donc bien que du noir apparaît en regardant le fichier texte mais je n'arrive pas à le détecter (aucune MsgBox ne s'affiche pour me signaler l'arrivée de noir). Je souhaiterais donc savoir si quelqu'un sait comment résoudre ce problème qui me semble assez basique mais que je n'arrive pas à résoudre.

Je vous remercie de votre aide et vous souhaite une bonne fin de journée et de semaine.

Cordialement,
Guilhem
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Problème d'identification d'un pixel de couleur noire  

#2

Message par orax »

Ça ne pouvait pas marcher à cause des @CRLF dans...

Code : Tout sélectionner

$col = PixelGetColor(948,204) & @CRLF
$cole = Hex($col, 6) & @CRLF
Dans ce cas, on peut utiliser un seul signe égal (=) dans les comparaisons.

Code : Tout sélectionner

Func Couleur()
	Local $col
	Local $cole
	Local $colf
	Local $colg
	Local $chemin = "Couleurs.txt"
	_FileCreate($chemin)
	While 1
		$col = PixelGetColor(948, 204) ; PixelGetColor() retourne un nombre
		$cole = Hex($col, 6) ; Hex() retourne une chaîne de caractères
		FileWriteLine($chemin, $cole)
		; ou
;~ 		FileWrite($chemin, $cole & @CRLF)

		; nombre 0
		If $col = 0 Then
			MsgBox(0, "info", "methode 1 marche")
		EndIf

		; nombre 0 en hexadécimal
		If $col = 0x0 Then
			MsgBox(0, "info", "methode 2 marche")
		EndIf

		; nombre 0 en hexadécimal
		If $col = 0x000000 Then
			MsgBox(0, "info", "methode 3 marche")
		EndIf

		; chaîne de caractères
		If $cole = "000000" Then
			MsgBox(0, "info", "methode 4 marche")
		EndIf

		; détecte la couleur rouge
		If $col = 0xFF0000 Then
			MsgBox(0, "couleur rouge détectée", "methode 1 marche")
		EndIf
		If $cole = "FF0000" Then
			MsgBox(0, "couleur rouge détectée", "methode 2 marche")
		EndIf

		Sleep(100)
	WEnd
EndFunc   ;==>Couleur
Dans ce code, $col est donc comparé à un nombre (décimal ou hexadécimal) et $cole est comparé à une chaîne.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
guigui54
Niveau 1
Niveau 1
Messages : 10
Enregistré le : dim. 29 sept. 2013 21:29
Status : Hors ligne

Re: Problème d'identification d'un pixel de couleur noire

#3

Message par guigui54 »

Merci de ton aide, encore une fois je suis trop centré sur un aspect pouvant expliquer l'erreur et je n'ai pas fait attention au reste de mon code alors que l'erreur toute simple se trouvait deux lignes plus haut.

Le sujet peut être fermé.
Répondre