Bonjour à tous,
Y a t'il un moyen de récuperer la valeur RGB (0-255) de chaque pixel d'un fichier GIF ou TIF (8bits)
et d'écrire ces valeurs dans un fichier texte.
Pour l'instant je le fais en Python, mais ça m'arrangerait de le faire en Autoit, pour ne pas faire d'appel externe.
Je précise que le fichier gif est petit (87x24)
D'avance merci pour votre aide
[R] Récupèrer la valeur RGB de chaque pixel d'une image GIF
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Récupèrer la valeur RGB de chaque pixel d'une image GIF
Modifié en dernier par Sachadee le mer. 16 oct. 2013 03:55, modifié 1 fois.
Re: [..] Récupèrer la valeur RGB de chaque pixel d'une image
Il faudrait peut etre voir du coté de l'UDF ImageSearch pour connaitre les classes et les methodes
Sinon:
Recuperer la taille de l'image (w-h)
Prévoir un tableau pour recueillir chaque valeur (au moins identique a la résolution 87+1x24+1)
Faire une boucle i pour la largeur et une sous boucle j pour la hauteur
Pour la formule je pense à $couleur[j] = PixelGetColor(i,j)
Par contre la valeur retourné est en Hexa donc prévoir une méthode pour la conversion RGB
Sinon:
Recuperer la taille de l'image (w-h)
Prévoir un tableau pour recueillir chaque valeur (au moins identique a la résolution 87+1x24+1)
Faire une boucle i pour la largeur et une sous boucle j pour la hauteur
Pour la formule je pense à $couleur[j] = PixelGetColor(i,j)
Par contre la valeur retourné est en Hexa donc prévoir une méthode pour la conversion RGB
Modifié en dernier par alabases le mar. 15 oct. 2013 18:27, modifié 4 fois.
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Récupèrer la valeur RGB de chaque pixel d'une image
Sinon, ce sujet devrait correspondre exactement à ce que vous cherchez :
http://www.autoitscript.com/forum/topic ... -an-image/
http://www.autoitscript.com/forum/topic ... -an-image/
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Récupèrer la valeur RGB de chaque pixel d'une image
Merci pour vos réponses,
Après quelques recherche j'ai trouver un code intèressant de "Prodigy" sur :
http://www.autoitscript.com/forum/topic ... -from-bmp/
que j'ai modifié de cette manière pour lire tous les pixels d'une image sans l'afficher et sauver la valeurs des pixels dans un fichier texte :
Autre lien intèressant qui traite du sujet (à part celui donné par Tlem
) :
l'excellent GDIP.au3 - http://www.autoitscript.com/forum/topic/106021-gdipau3/
et sur ce forum également un topic sur le sujet - http://www.autoitscript.fr/forum/viewto ... 93&start=0
Voilà je mets le sujet comme clos, mais si quelqu'un à une idée pour améliorer le temps d'éxecution ou une autre méthode plus performante
qu'il n´hesite pas à poster.
Encore merci et à +
Après quelques recherche j'ai trouver un code intèressant de "Prodigy" sur :
http://www.autoitscript.com/forum/topic ... -from-bmp/
que j'ai modifié de cette manière pour lire tous les pixels d'une image sans l'afficher et sauver la valeurs des pixels dans un fichier texte :
Code : Tout sélectionner
#include <GDIPlus.au3>
#include <GDIPlusConstants.au3>
_GetPixelFromBMP("Captcha1.gif")
Func _GetPixelFromBMP($sImage);git die farbe an $x,$y einer 24bpp-bitmap aus
Local $pbitmap, $Bmp
Local $tBD, $iWidth, $iHeight, $iStride
Local $pData, $color
_GDIPlus_Startup()
$pbitmap = _GDIPlus_ImageLoadFromFile($sImage) ;bild laden
If @error Then Return SetError(1, 2, 0)
$tBD = _GDIPlus_BitmapLockBits($pbitmap, 0, 0, _GDIPlus_ImageGetWidth($pBitmap), _GDIPlus_ImageGetHeight($pBitmap), $GDIP_ILMREAD, $GDIP_PXF24RGB)
If @error Then MsgBox(0, "", "Error locking region " & @error)
$iWidth = DllStructGetData($tBD, 1) ;breite der bitmap
$iHeight = DllStructGetData($tBD, 2) ;hoehe der bitmap
$iStride = DllStructGetData($tBD, 3) ;Erklärung : <a href='http://www.autoitscript.com/forum/index.php?showtopic=106673&view=findpost&p=753169' class='bbc_url' title=''>http://www.autoitscript.com/forum/index.php?showtopic=106673&view=findpost&p=753169</a>
$pData = DllStructGetData($tBD, 5) ;pointer auf die bitmapdaten
$Bmp = DllStructCreate("byte[" & $iStride * $iHeight & "]", $pData) ;struct gefüllt mit den Daten der Bitmap
For $y = 0 to $iHeight Step 1 ;ON BOUCLE SUR LA HAUTEUR
For $x = 0 To $iwidth Step 1 ;ON BOUCLE SUR LA LARGEUR
$position = $istride * ($y - 1) + 3 * ($x-1) ;Umrechnung der Position von x- und y- Koordinaten
$substruct = DllStructCreate("ubyte[3]", DllStructGetPtr($Bmp) + $position) ;eine 3-byte struct an die position vom pixel schreiben
$Color = DllStructgetData($substruct, 1) ;Daten aus der struct lesen
;FileWrite("testpixel.txt", $color & @CRLF) ;ON ECRIT LA VALEUR DU PIXEL DANS UN TXT
FileWrite("testpixel.txt", "Col : " & $x & " Ligne : " & $y & " " & $color & @CRLF & " ")
Next
Next
_GDIPlus_BitmapUnlockBits($pbitmap, $tBD)
;_WinAPI_DeleteObject($hBmp)
_GDIPlus_ImageDispose($pbitmap)
_GDIPlus_Shutdown()
return $color
EndFunc ;==>_GetImagePixels
l'excellent GDIP.au3 - http://www.autoitscript.com/forum/topic/106021-gdipau3/
et sur ce forum également un topic sur le sujet - http://www.autoitscript.fr/forum/viewto ... 93&start=0
Voilà je mets le sujet comme clos, mais si quelqu'un à une idée pour améliorer le temps d'éxecution ou une autre méthode plus performante
qu'il n´hesite pas à poster.
Encore merci et à +

