borup Posted March 4, 2008 Share Posted March 4, 2008 Is there ea way to add text to a picture and save it again as a picture? Link to comment Share on other sites More sharing options...
Oldschool Posted March 4, 2008 Share Posted March 4, 2008 Is there ea way to add text to a picture and save it again as a picture?You can do it using ImageMagichttp://www.autoitscript.com/forum/index.php?showtopic=49065 Link to comment Share on other sites More sharing options...
Kip Posted March 4, 2008 Share Posted March 4, 2008 (edited) GDIPlus, very easy. look at GDI Management in the UDF section of the helpfile Edited March 4, 2008 by kip MailSpons: Fake SMTP server for safe email testing Dutch postcode & address API. Link to comment Share on other sites More sharing options...
borup Posted March 4, 2008 Author Share Posted March 4, 2008 I found this example. But i need to load a picture from a file and and centered text in the middle, and the save it to a new file name. Please help. #include <GuiConstantsEx.au3> #include <GDIPlus.au3> Opt('MustDeclareVars', 1) _Main() Func _Main() Local $hGUI, $hWnd, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout ; Create GUI $hGUI = GUICreate("GDI+", 400, 300) $hWnd = WinGetHandle("GDI+") GUISetState() ; Draw a string _GDIPlus_Startup () $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd) $hBrush = _GDIPlus_BrushCreateSolid (0x7F00007F) $hFormat = _GDIPlus_StringFormatCreate () $hFamily = _GDIPlus_FontFamilyCreate ("Arial") $hFont = _GDIPlus_FontCreate ($hFamily, 16, 1) $tLayout = _GDIPlus_RectFCreate (140, 110, 100, 20) _GDIPlus_GraphicsDrawStringEx ($hGraphic, "INTER05", $hFont, $tLayout, $hFormat, $hBrush) ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Clean up resources _GDIPlus_FontDispose ($hFont) _GDIPlus_FontFamilyDispose ($hFamily) _GDIPlus_StringFormatDispose ($hFormat) _GDIPlus_BrushDispose ($hBrush) _GDIPlus_GraphicsDispose ($hGraphic) _GDIPlus_Shutdown () EndFunc ;==>_Main Link to comment Share on other sites More sharing options...
Oldschool Posted March 4, 2008 Share Posted March 4, 2008 Try openening the GDIPlus include if you are gonna go that route. It's in the include folder in the Autoit directory. Look at these: _GDIPlus_ImageLoadFromFile _GDIPlus_ImageSaveToFile I dont know how to combine images with GDI sorry, with image magic you combine images like this: $oMagic = ObjCreate("ImageMagickObject.MagickImage.1") $oMagic.Composite(@ScriptDir &".\Temp\TopImage.bmp", ".\Temp\BottomImage.bmp", ".\Temp\composedImage.bmp") Link to comment Share on other sites More sharing options...
borup Posted March 5, 2008 Author Share Posted March 5, 2008 (edited) cant get it to wrtite text over the picture. Can anyone help med with this script? #include <GDIPlus.au3> _Main() Func _Main() Local $hBitmap, $hImage, $sCLSID, $tData, $tParams, $hWnd, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout, $GUI_EVENT_CLOSE ; Initialize GDI+ library _GDIPlus_Startup () ; Load image $hImage = _GDIPlus_ImageLoadFromFile ("C:\Temp\1.jpg") ; Get JPEG encoder CLSID $sCLSID = _GDIPlus_EncodersGetCLSID ("JPG") ; Draw a string _GDIPlus_Startup () $hBrush = _GDIPlus_BrushCreateSolid (0xFF00007F) $hFormat = _GDIPlus_StringFormatCreate () $hFamily = _GDIPlus_FontFamilyCreate ("Arial") $hFont = _GDIPlus_FontCreate ($hFamily, 12, 2) $tLayout = _GDIPlus_RectFCreate (140, 110, 100, 20) _GDIPlus_GraphicsDrawStringEx ($hImage, "Hello world", $hFont, $hImage, $hFormat, $hBrush) ; Save image _GDIPlus_ImageSaveToFileEx ($hImage, "C:\Temp\desktop.jpg", $sCLSID, DllStructGetPtr($tParams)) ; Shut down GDI+ library _GDIPlus_ShutDown () EndFunc ; Loop until user exits Edited March 5, 2008 by borup Link to comment Share on other sites More sharing options...
borup Posted March 5, 2008 Author Share Posted March 5, 2008 Finally.... he he. But how do i center the text??? The $sString will be replaced with a automatic pull from the system... #include <GDIPlus.au3> Global $hBitmap, $hImage, $hGraphic, $hFamily, $hFont, $tLayout, $hFormat, $aInfo, $hBrush1, $hBrush2, $iWidth, $iHeight, $hPen Global $sString="SERVERNAME" ; Initialize GDI+ library _GDIPlus_StartUp() ; Load image and emboss text $hImage = _GDIPlus_ImageLoadFromFile('C:\Temp\1.jpg') $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage) $hFamily = _GDIPlus_FontFamilyCreate("Arial") $hFont = _GDIPlus_FontCreate($hFamily, 38, 1) $hFormat = _GDIPlus_StringFormatCreate(0x4000) $hBrush2 = _GDIPlus_BrushCreateSolid(0xff000000) $hPen = _GDIPlus_PenCreate(0xC4000000, 1) $tLayout = _GDIPlus_RectFCreate (150, 250 ) $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat) _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush2) ; Save image _GDIPlus_ImageSaveToFile($hImage, @MyDocumentsDir & '\AutoItImage2.bmp') ; Free resources _GDIPlus_PenDispose ($hPen ) _GDIPlus_BrushDispose ($hBrush1 ) _GDIPlus_BrushDispose ($hBrush2 ) _GDIPlus_StringFormatDispose($hFormat ) _GDIPlus_FontDispose ($hFont ) _GDIPlus_FontFamilyDispose ($hFamily ) _GDIPlus_GraphicsDispose ($hGraphic) _GDIPlus_ImageDispose ($hImage ) _GDIPlus_ShutDown() ; Show image Run("MSPaint.exe " & '"' & @MyDocumentsDir & '\AutoItImage2.bmp"') AlienStar, fraizor and ahmeddzcom 3 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now