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
Créer des fichiers image PNG ou Bitmap avec Autoit
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.
-
- Niveau 1
- Messages : 13
- Enregistré le : dim. 17 sept. 2017 17:38
- Status : Hors ligne
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Créer des fichiers image PNG ou Bitmap avec Autoit
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()
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
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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
-
- Niveau 1
- Messages : 13
- Enregistré le : dim. 17 sept. 2017 17:38
- Status : Hors ligne
Re: Créer des fichiers image PNG ou Bitmap avec Autoit
Merci de m'avoir répondu
Pour être plus précis sur ma demande, je souhaiterai générer une image à l'aide d'une fonction autoit :
Pour être plus précis sur ma demande, je souhaiterai générer une image à l'aide d'une fonction autoit :
L'objectif final est de générer une image complète avec l'algorithme que je suis en train de mettre au point
-
- Niveau 1
- Messages : 13
- Enregistré le : dim. 17 sept. 2017 17:38
- Status : Hors ligne
Re: Créer des fichiers image PNG ou Bitmap avec Autoit
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
Je te tiens au courant
-
- Niveau 1
- Messages : 13
- Enregistré le : dim. 17 sept. 2017 17:38
- Status : Hors ligne
Re: Créer des fichiers image PNG ou Bitmap avec Autoit
Ok alors j'ai enfin compris tout le fonctionnement de GDIPlus et c'est formidable ! c'est exactement ce qu'il me fallait
Voici mon code :
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
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
_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
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
-
- Niveau 1
- Messages : 13
- Enregistré le : dim. 17 sept. 2017 17:38
- Status : Hors ligne
Re: Créer des fichiers image PNG ou Bitmap avec Autoit
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 ?
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 ?
-
- Niveau 1
- Messages : 13
- Enregistré le : dim. 17 sept. 2017 17:38
- Status : Hors ligne
Re: Créer des fichiers image PNG ou Bitmap avec Autoit
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
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