Page 1 sur 1

Créer des fichiers image PNG ou Bitmap avec Autoit

Posté : lun. 18 sept. 2017 20:28
par FDMgameplay
Salut à tous !
Je voudrais savoir s'il est possible de créer des fichiers image type png ou bitmap avec autoit.
Je n'ai rien trouvé à ce sujet et le FileWrite me semble être un peu compliqué à réaliser.

Je remercie d'avance toute personne m'aidant dans ma manœuvre :mrgreen:

Re: Créer des fichiers image PNG ou Bitmap avec Autoit

Posté : lun. 18 sept. 2017 21:57
par walkson
Bonjour,
Votre demande est un peu flou
Créer à partir du binaire, d'un chemin, par "Autoit", etc ....?
Je vous invite à regarder la rubrique GDIPlus de l'aide et plus particulièrement les bitmaps
L'exemple ci-dessous est tiré de l'aide (un peu modifié) à partir de _GDIPlus_BitmapCreateFromScan0()
#include <GDIPlus.au3>

Example()

Func Example()
   _GDIPlus_Startup()
   Local Const $iW = 460, $iH = 100
   Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) ;create an empty bitmap
   Local $hBmpCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;get the graphics context of the bitmap
   _GDIPlus_GraphicsSetSmoothingMode($hBmpCtxt, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
   _GDIPlus_GraphicsClear($hBmpCtxt, 0xFFFFFF00) ;clear bitmap with color white
   _GDIPlus_GraphicsDrawString($hBmpCtxt, "AutoIt rulez!", 0, 0, "Comic Sans MS", 52) ;draw some text to the bitmap
   Local $sFile = @TempDir & "\Test.bmp"
   _GDIPlus_ImageSaveToFile($hBitmap, $sFile) ;save bitmap to disk
   ;cleanup GDI+ resources
   _GDIPlus_GraphicsDispose($hBmpCtxt)
   _GDIPlus_BitmapDispose($hBitmap)
   _GDIPlus_Shutdown()
   ShellExecute($sFile) ;open bitmap with default app
EndFunc   ;==>Example

Re: Créer des fichiers image PNG ou Bitmap avec Autoit

Posté : mar. 19 sept. 2017 18:40
par FDMgameplay
Merci de m'avoir répondu :mrgreen:

Pour être plus précis sur ma demande, je souhaiterai générer une image à l'aide d'une fonction autoit :
If <une action dans mon programme> Then
   ;créer un pixel noir aux coordonnées données sur un fichier .png ou autre format d'image (de préférence png)
Else
   ;créer un pixel blanc aux coordonnées données sur un fichier .png ou autre format d'image (de préférence png)
EndIf
L'objectif final est de générer une image complète avec l'algorithme que je suis en train de mettre au point

Re: Créer des fichiers image PNG ou Bitmap avec Autoit

Posté : mar. 19 sept. 2017 18:45
par FDMgameplay
Je vais regarder GDIplus, j'ai l'impression que cela pourrait m'être utile mais je ne comprends pas encore comment parfaitement l'utiliser.

Je te tiens au courant

Re: Créer des fichiers image PNG ou Bitmap avec Autoit

Posté : mer. 20 sept. 2017 14:44
par FDMgameplay
Ok alors j'ai enfin compris tout le fonctionnement de GDIPlus et c'est formidable ! c'est exactement ce qu'il me fallait :D

Voici mon code :
Func _ImageCreator($color)

   _GDIPlus_Startup()

   $Brush = _GDIPlus_BrushCreateSolid( $color )

   Local Const $iW = 240, $iH = 80
   Local $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH) ;create an empty bitmap
   Local $hBmpCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;get the graphics context of the bitmap
   _GDIPlus_GraphicsClear($hBmpCtxt, 0xFFFFFFFF)
   _GDIPlus_GraphicsFillRect( $hBitmap, $zX, $zY, 4, 4, $Brush ) ; les variables $zX et $zY sont déclarées plus haut en global en fonction de l'algo

   Local $sFile = @DesktopDir & "\Test.png"
   _GDIPlus_ImageSaveToFile($hBitmap, $sFile) ;save bitmap to disk
   ;cleanup GDI+ resources
   _GDIPlus_BrushDispose($Brush)
   _GDIPlus_GraphicsDispose($hBmpCtxt)
   _GDIPlus_BitmapDispose($hBitmap)
   _GDIPlus_Shutdown()
   ShellExecute($sFile) ;open bitmap with default app
EndFunc
Mais le problème c'est que lorsque la fonction est censé dessiner un carré de 4x4 pixels noirs ( $color = 0xFF000000) sur le fond blanc de l'image (_GDIPlus_GraphicsClear($hBmpCtxt, 0xFFFFFFFF) ) il ne se passe rien.
J'ai cherché et je ne trouve pas d'erreurs pourtant.

Quelqu'un pourrait m'aider ?

EDIT : Je tiens à préciser que l'image se crée bien avec le fond blanc mais il n'y a pas le carré de 4x4 pixels noir qui s'affiche

Re: Créer des fichiers image PNG ou Bitmap avec Autoit

Posté : mer. 20 sept. 2017 20:44
par FDMgameplay
Ok j'ai trouvé mon erreur ^^

dans le _GDIPlus_GraphicsFillRect( $hBmpCtxt, $zX, $zY, 4, 4, $Brush ) j'avais mis en première variable $hBitmap à la place de $hBmpCtxt

Autant pour moi !

A présent j'ai un autre problème qui se pose : j'aimerais que au fur et à mesure de mon algorithme, ce dessin se remplisse peu à peu. Le problème avec la fonction que j'ai faite, c'est qu'à chaque fois qu'elle est appelée, elle n'édite pas l'image mais elle la remplace par une nouvelle.
Comment régler ce problème ?

Re: Créer des fichiers image PNG ou Bitmap avec Autoit  

Posté : sam. 30 sept. 2017 23:32
par FDMgameplay
Rebonjour !j'ai réglé ce problème de la manière suivante :
A chaque fois qu'une nouvelle boucle est effectuée, j'utilise la fonction _GDIPlus_GraphicsDrawImage qui permet de récupérer l'image créée lors de la boucle précédente et de l'éditer en dessinant par dessus à certains endroits.

Je marque ce sujet comme résolu :D