Sign in to follow this  
Followers 0
borup

How to add text to image

7 posts in this topic

Is there ea way to add text to a picture and save it again as a picture?

Share this post


Link to post
Share on other sites



#3 ·  Posted (edited)

GDIPlus, very easy.

look at GDI Management in the UDF section of the helpfile

Edited by kip

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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")

Share this post


Link to post
Share on other sites

#6 ·  Posted (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 by borup

Share this post


Link to post
Share on other sites

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"')

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0