Page 1 sur 1

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

Posté : mar. 17 oct. 2017 21:39
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

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

Posté : mer. 18 oct. 2017 01:02
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.

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

Posté : mer. 18 oct. 2017 11:01
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é.