Jump to content

Recommended Posts

  • Moderators
Posted (edited)

I know there are snippet threads, but I'd like this one to be specific.

I've see quite a few neat GDI+ code snippets (UEZ and Progandy come to mind first) to manipulate, create, etc, and I thought it'd be neat to be able to find them under one thread.

I'm going to reserve the next 3 posts because I'm unsure at the moment if it's the "Quote" or "Spoiler" bbcode tags that has the 10 limit.

You can link or post the snippets you find or create and I'll title them and put them in the threads for everyone to find. ( Going to have to remember to edit with regular editor! )

Some of these may not have titles, so I may create my own, if the author(s) want(s) a different one, let me know.

_GDIPlus_WaterMark.au3 - Author: UEZ - Added: 2012-10-13 - Updated:

;coded by UEZ build 2012-08-10 beta
;updated by UEZ ( x&y position ) 2012-10-13 beta
#include-once
#include <GDIPlus.au3>

#cs - Example
_GDIPlus_Startup()
$sIn = StringReplace(@AutoItExe, "autoit3.exe", "ExamplesGUImsoobe.jpg")
$sOut = @ScriptDir & "Watermarked.jpg"

$r = _GDIPlus_WatermarkImage($sIn, $sOut, "Watermarked by UEZ", 170, 50, "Arial", 64, 45)

_GDIPlus_Shutdown()

If $r Then ShellExecute($sOut)
Exit
#ce

;======================================================================================
; Function Name:         _GDIPlus_WatermarkImage
; Description:           adds a text to an image
;
; Parameters:            $sBitmapFile: image file to load
;                                    $sSave: filename for saved image -> if no extension (jpg, bmp, png, gif, tif) is given the default is png image format
;                                    $sText: text string to draw onto the image
;                                    $iX: x position of the text on the image
;                                    $iY: y position of the text on the image
;                                    $sFontName: font name to use
;                                    $iFontSize: size of the font
; Optional:                  $fAngle: angle of the text -> 0° - 359°
;                                        $iFontColor: color of the text
;                                        $fAlpha: alpha channel of the text -> 0.0 (transparent) - 1.0 (opaque)
;                                        $iJPGQuality: JPG save quality -> 0 (worst) - 100 (best)
;
; Requirement(s):    GDIPlus.au3
; Return Value(s):   Success: 1
;                                    Error:
; Error codes:           1: image file to load not found
;                                    2: unable to create bitmap from loaded image
;                                    3: unable to save watermarked image
;
; Remark:                    don't forget to start _GDIPlus_Startup() / _GDIPlus_Shutdown()
;
; Author(s):                 UEZ
; Version:                   v0.99 Build 2012-10-13 Beta
;=======================================================================================
Func _GDIPlus_WatermarkImage($sBitmapFile, $sSave, $sText, $iX, $iY, $sFontName, $iFontSize, $fAngle = 0, $iFontColor = 0xFFFFFF, $fAlpha = 0.04, $iJPGQuality = 90)
    If Not FileExists($sBitmapFile) Then Return SetError(1, 0, 0)
    Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sBitmapFile)
    If Not $hBitmap Then Return SetError(2, 0, 0)
    If $fAlpha < 0 Then $fAlpha = 0
    If $fAlpha > 1 Then $fAlpha = 1
    Local $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    Local $hBrush = _GDIPlus_BrushCreateSolid(BitShift(Int($fAlpha * 0xFF), -24)  + $iFontColor)
    Local $hFormat = _GDIPlus_StringFormatCreate()
    Local $hFamily = _GDIPlus_FontFamilyCreate($sFontName)
    Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize, 0)
    Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
    Local $aMeasure = _GDIPlus_GraphicsMeasureString($hCtxt, $sText, $hFont, $tLayout, $hFormat)
    If Not $fAngle Then
        _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
        DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt, "int", 4)
        DllStructSetData($tLayout, "x", $iX)
        DllStructSetData($tLayout, "y", $iY)
        _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
    Else
        $fAngle = Mod($fAngle, 360)
        Local $iW = Int(DllStructGetData($aMeasure[0], "width") * 2), $iH = Int(DllStructGetData($aMeasure[0], "height") * 2), $iQ
        If $iW > $iH Then
            $iQ = $iW
        Else
            $iQ = $iH
        EndIf
        Local $hBitmap_Rot = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iQ, "int", $iQ, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
        $hBitmap_Rot = $hBitmap_Rot[6]
        Local $hCtxt_Rot = _GDIPlus_ImageGetGraphicsContext($hBitmap_Rot)
        _GDIPlus_GraphicsSetSmoothingMode($hCtxt_Rot, 2)
        DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt_Rot, "int", 4)
        Local $hMatrix = _GDIPlus_MatrixCreate()
        _GDIPlus_MatrixTranslate($hMatrix, $iQ / 2, $iQ / 2)
        _GDIPlus_MatrixRotate($hMatrix, $fAngle, False)
        _GDIPlus_MatrixTranslate($hMatrix, -$iQ / 2, -$iQ / 2)
        _GDIPlus_GraphicsSetTransform($hCtxt_Rot, $hMatrix)
        DllStructSetData($tLayout, "x", $iQ / 2)
        DllStructSetData($tLayout, "y", $iQ / 2)
        _GDIPlus_GraphicsDrawStringEx($hCtxt_Rot, $sText, $hFont, $tLayout, $hFormat, $hBrush)
        _GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap_Rot, $iX - $iQ / 2, $iY - $iQ / 2, $iQ, $iQ)
        _GDIPlus_MatrixDispose($hMatrix)
        _GDIPlus_GraphicsDispose($hCtxt_Rot)
        _GDIPlus_BitmapDispose($hBitmap_Rot)
    EndIf
    Local $bRes
    If StringRight($sSave, 4) = ".jpg" Then
        Local Const $sCLSID = _GDIPlus_EncodersGetCLSID("JPG")
        Local $tParams = _GDIPlus_ParamInit(1)
        Local $tData = DllStructCreate("int Quality")
        If $iJPGQuality < 0 Then $iJPGQuality = 0
        If $iJPGQuality > 100 Then $iJPGQuality = 100
        DllStructSetData($tData, "Quality", $iJPGQuality)
        Local $pData = DllStructGetPtr($tData)
        _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
        Local Const $pParams = DllStructGetPtr($tParams)
        $bRes = _GDIPlus_ImageSaveToFileEx($hBitmap, $sSave, $sCLSID, $pParams)
        $tData = 0
        $tParams = 0
    Else
        StringRegExp($sSave, ".*.(gif|png|bmp|tif)", 1)
        If @error Then
            If StringRight($sSave, 1) = "." Then
                $sSave &= "png"
            Else
                $sSave &= ".png"
            EndIf
        EndIf
        $bRes = _GDIPlus_ImageSaveToFile($hBitmap, $sSave)
    EndIf
    Local $err
    If Not $bRes Then $err = 3
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hCtxt)
    _GDIPlus_BitmapDispose($hBitmap)
    $tLayout = 0
    If $err Then Return SetError($err, 0, 0)
    Return 1
EndFunc

_GDIPlus_BMPFromMemory – Author UEZ – Added: 2012-10-14 – Updated:

; Smoke_N only changed function name
#include-once
#include <Memory.au3>
#include <GDIPlus.au3>

;======================================================================================
; Function Name:        _GDIPlus_BMPFromMemory
; Description:            Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters:              $bImage:    the binary string which contains any valid image which is supported by GDI+
; Optional:                  $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
;
; Remark:                      hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;                                      Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
;
; Requirement(s):      GDIPlus.au3, Memory.au3 and _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Return Value(s):    Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
;                                      Error: 0
; Error codes:            1: $bImage is not a binary string
;                                      2: unable to create stream on HGlobal
;                                      3: unable to create bitmap from stream
;
; Author(s):                    UEZ
; Additional Code:    thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
;                                      Yashied for _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Version:                    v0.98 Build 2012-08-29 Beta
;=======================================================================================
Func _GDIPlus_BMPFromMemory($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
                                           "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBmp
    EndIf
    Return $hBitmap
EndFunc   ;==>_GDIPlus_BMPFromMemory

Example – Needle Movement (4bit example provided, link to 32bit found in code) – Author: UEZ - Added: 2012-10-14 – Updated:

;coded by UEZ 2012 build 2012-09-26
;link to 32bit photo example
#include <GUIConstantsEx.au3>
#include <Memory.au3>
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)

_GDIPlus_Startup()

Global Const $hBitmap_bg = Load_BMP_From_Mem(_Speedometer())
Global Const $iW = _GDIPlus_ImageGetWidth($hBitmap_bg), $iH = _GDIPlus_ImageGetHeight($hBitmap_bg)
Global Const $hGUI = GUICreate("GDI+ Speedometer by UEZ 2012", $iW / 2, $iH / 2)
GUISetBkColor(0xABCDEF, $hGUI)
GUISetState()
Global Const $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global Const $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphic)
Global Const $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt, "int", 4)
Global Const $iRadius = 300
Global Const $iNeedle_size = 16
Global Const $fCenter_x = $iW / 2, $fCenter_y = $iH / 2
Global Const $hPen_needle = _GDIPlus_PenCreate(0xFFFF0000, $iNeedle_size)
Global Const $hCap = _GDIPlus_ArrowCapCreate(1, 1)
    _GDIPlus_PenSetCustomEndCap($hPen_needle, $hCap)

Global Const $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
Global Const $fRad2Deg = ACos(-1) / 180
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

Global Const $fDegMin = -223.5, $fDegMax = 44
Global $fDeg = $fDegMin, $fAcc = 0.75, $fKMH, $fMPH


Do
    _GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap_bg, 0, 0, $iW, $iH)
    DllCall($ghGDIPDll, "int", "GdipDrawLine", "handle", $hCtxt, "handle", $hPen_needle, "float", $fCenter_x, "float", $fCenter_y, "float", $fCenter_x + Cos($fDeg * $fRad2Deg) * $iRadius, "float", $fCenter_y + Sin($fDeg * $fRad2Deg) * $iRadius)
    _GDIPlus_GraphicsFillEllipse($hCtxt, $fCenter_x - $iNeedle_size, $fCenter_y - $iNeedle_size, $iNeedle_size * 2, $iNeedle_size * 2, $hBrush)
    _GDIPlus_GraphicsDrawString($hCtxt, StringFormat("%.3i MPH", $fMPH), 240, 520, "Times New Roman", 24)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iW / 2, $iH / 2)
    If $fDeg < $fDegMax Then
        $fDeg += $fAcc
        $fKMH = (249.5 + $fDeg) / 1.33333
        $fMPH = Int($fKMH * 0.621371)
        $fAcc *= 1.005^2
    EndIf
Until Not Sleep(20)


Func _Exit()
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_ArrowCapDispose($hCap)
    _GDIPlus_PenDispose($hPen_needle)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hCtxt)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap_bg)
    _GDIPlus_Shutdown()
    GUIDelete()
    Exit
EndFunc

#region
;======================================================================================
; Function Name:        Load_BMP_From_Mem
; Description:            Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters:              $bImage:    the binary string which contains any valid image which is supported by GDI+
; Optional:                  $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
;
; Remark:                      hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;                                      Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
;
; Requirement(s):      GDIPlus.au3, Memory.au3 and _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Return Value(s):    Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
;                                      Error: 0
; Error codes:            1: $bImage is not a binary string
;                                      2: unable to create stream on HGlobal
;                                      3: unable to create bitmap from stream
;
; Author(s):                    UEZ
; Additional Code:    thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
;                                      Yashied for _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Version:                    v0.98 Build 2012-08-29 Beta
;=======================================================================================
Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
                                           "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBmp
    EndIf
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

Func _WinAPI_BitmapCreateDIBFromBitmap($hBitmap) ;create 32-bit bitmap v5 (alpha channel supported)
    Local $tBIHDR, $aRet, $tData, $pBits, $hResult = 0
    $aRet = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($aRet[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aRet[2], $aRet[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate(  'dword bV5Size;long bV5Width;long bV5Height;word bV5Planes;word bV5BitCount;dword bV5Compression;' & _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/dd183381(v=vs.85).aspx
                                                                'dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;'  & _
                                                                'dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;' & _
                                                             'int bV5Endpoints[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;' & _
                                                                'dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved')
    DllStructSetData($tBIHDR, 'bV5Size', DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 'bV5Width', $aRet[2])
    DllStructSetData($tBIHDR, 'bV5Height', $aRet[3])
    DllStructSetData($tBIHDR, 'bV5Planes', 1)
    DllStructSetData($tBIHDR, 'bV5BitCount', 32)
    DllStructSetData($tBIHDR, 'bV5Compression', 0) ; $BI_BITFIELDS = 3, $BI_RGB = 0, $BI_RLE8 = 1, $BI_RLE4 = 2, $RGBA = 0x41424752
    DllStructSetData($tBIHDR, 'bV5SizeImage', $aRet[3] * DllStructGetData($tData, 'Stride'))
    DllStructSetData($tBIHDR, 'bV5AlphaMask', 0xFF000000)
    DllStructSetData($tBIHDR, 'bV5RedMask', 0x00FF0000)
    DllStructSetData($tBIHDR, 'bV5GreenMask', 0x0000FF00)
    DllStructSetData($tBIHDR, 'bV5BlueMask', 0x000000FF)
    DllStructSetData($tBIHDR, 'bV5CSType', 2) ; LCS_WINDOWS_COLOR_SPACE = 2
    DllStructSetData($tBIHDR, 'bV5Intent', 4) ; $LCS_GM_IMA
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
        DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $aRet[2] * $aRet[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
        $hResult = $hResult[0]
    Else
        $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    $tData = 0
    $tBIHDR = 0
    Return $hResult
EndFunc   ;==>_WinAPI_BitmapCreateDIBFromBitmap

;Code below was generated by: File to Base64 String Code Generator v1.10 Build 2012-09-08

Func _Speedometer($bSaveBinary = False)
    Local $Speedometer
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= 'gdEYf4PQPJwDR8bmnv/aUr2lvUprmhiDJtY1I9asrDjLd1uVLxzrBpn9HIizDcNzIvwmFmfhtaWulk4kH5WGtZY196i6aaJAE61muDRZLAqY+4vVRSuP4gwrRmQl5TnGFEq8RoleqrhNpcKWTuWzXll7cXma6SkKNIlrBZFlVICZ1EVTmGF9yhJW6W4MfO5c3cfdnxNn1v23XvWxguu8NFK+KG15axqPRU40O4vlM+iXx0K1ZcH0uCbWFgOktY8rPrVahI0xKl9AVfXj4gcR0VGR04x4oVFdltwDY49DQjeJgXt+5NSp5r3bt4/tKMHPeT+kbFFaWrSx5hWeN4ybyIrH4/3H9/dYt772nUvL75udQxRoJgK0G96i58JSfJNhEUNcsrmvURfNMhgFGlFjzeqOE97/jDIlQ7IpEYgr74+gbMgsw8A4jDtL2ParVFHatec3xbY7616RDM52fKw4JDNXOFSSQMABYLEjCQSii1OGJgKwCGKRYGFBpFVgRSsfiyYIsZUlThhfA5I/ED1kPPK8CCxiDrFc8f3GxCOHk4y/L8nFCxcaKVCUtkBLp9yEEQ4ey/vX5SkKNPto0sSXTbBvjBHuqe7Gh2ArbUXrk9HJqVVGiZtpRQxiCmtT9gaIJYrnxQLH53zu3Lnl993DAhefKV8Zn1gbnth/Ardmew0JLs+1toF1raa1RvWxrtZQVqNXPBzjnzV73h0IRBenLs02EWAxQAwR8xWdWgsvdlha1i5f8NLBwXh1qBRpbDyMk9HcqFwdFlhC2Jj5fsD9jmkNQ6CG+xsTYV73cXkXF5OH+oNyqEkdaHR5akETXZrpyvyHrFKlXZ0IrnqsaIq0UWKL2JSyY9ICk1jDuO9J7s/s4T7joGjsLGOCw2RGqQ/mGAeGubg8RYFmk3NaieRZNsIpLpxAq3F1cgLNOG3XiQS3OhaHDVtdCxRULoxFaVknqssyxbU55FCKy5O1fUtdnqJA06VJdhAuyA269TiBVheAj/icXXcBS3ew+W5SxOPeIj5u5Xw4zmU0oLr7NGPMMdJ3nSh52MC1ubFewfwea/u7b97atsK2okDTpdkvGDbf1fnNr3xja7oLEGzb1I6lO3pbxRgDXIzPwxeb81D3FrXN+lJXyx7HCONjQlKdMUiqybeyhuLitbs8xSQBYVOgVQjm7+Tkz3d1skCWrzUWJzHMvS6apIvWZn6u+cVlmYcyUSZkeqwUTQ7CwzBmvCZjk9haDp7P/OCZGjOIRQua8WbEV40mzuJFgYVv6lY59uhUmAVxNiGU78BNtQp+3r0QD7izRsWitNvQ0gk3LB6GyAMxRrIU1jT6Kc8gLk20oNkVIBcWviDKwkbGfVTeXYD/s21WNMkfZ0M/c8YLY4vryH+vDVs6BVdiwd6giylbTFVWikMUaIqzlMl8QlcnGxVWhGIBuT88OKAu2lqWmK3D4G/GV26fzUVrbWWMdsdyoqYer11HBqnlXNa2UuJR4DOvwLXJmoOAmuL9YQ6xN5QUaaKL05MkNXES8TGTuzqJBeP0WGNdNO6VTRLri9YzyzMkxk4uI76GIg1XIfO5QusZSVMI+lKuVtblUvXSRIFmMkDbsqmGBZ+Fp6IYL6wjxwmzyjdJwV1fdOzU/9wSSk0wr5nfK0VcKdcmiUiHOhhMLBZDvTRE2kRZxaJAMxmAQFBM5YUtQJF7KBBcnYVi0aoVZpJuv0Nh5ckbvIexQ620jYmptsk7z8lzyzhChPmNRa14S6c4WYoxgEWr2NqMUCWreDuTB2Tv3vv3mu1AcUZhQsRZpYHbKzOWSghJ0s5JN6/PjWkG3joV91txf+fOnbZhOZa1lV/XhXgcXm/oPfO74f7D4+rGmDGMCKIK18DypUnOnz/f7D++P4arVRRoJgOw8FRLHLhdpCSCiEiBQ2GUZBKSUepKwNlc8oDo4lSchWSAyuG0WMzVKSJSfyP0okldZ86c2WB7KFGgmam5NfFTmPJXZXXOBhGRdPu4aj0H'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= 'ALC2qX3hDAFNSKubB4Z1Lw3AZoBmbVNLOzUR0DQPZHXHsDYPANgMkGd/R5oBcAdN80D/76UBuG/WoWYAVNCsh6rvpfXzyBPA8NkOr21CQLN5oCdHngA898Sz+eLdhvtmOOLEvDQAR5qbFzZHPZ5vhoBmXlq+dZ3fPF+6A8DKpv6P0MARp1Ec3TjyBNClOZQjTVTQaMrkcX33eouPPAF0aTbXU0q/oYJGPui5wxB5AGSpbmsAWHRed2kOLZwhoBnF0Rx55m5ayuj5xlbWBkDVLM/iPJMdaeKIs6HLc40NBAB2aeZ+8MSRJipoqKbFyhsIAMw2a8LZ5JEmKmjwwYfvjy6/frlcu727wgYCAOMzskvzxVdeLAcPHJodzhDQMDMtzQQ7v9kpiwWgESDP2U812wxHnJiZliXruQeRu2n7H92fb3plfgCqZnUjQJ61c4QzVNDQQDBPNQ2Ajec38qV3cVUzVNDQQFBX09JttHcAxmfk2Zln6FLHZ6CChrtpeci8c+ud8mAAgll1CrG8JecIaHDrn7dGV65cKVkV1ZTpty9ulwcDMNfs3Llz5fiXjq8snCGgoZpmJEcFUDVr9h2v864Z7qCh09NOzwpgh2bCWeaarb1DExU0HHumlN/IQ+nUmdNlYAADZ5uVea07zkRAw0iOepfcEI49AceZndmhiYCGJoK+z04DbALodhMAAhqaCFLyP795vvQEoDuz800AaBJAE0EeaFlv0tmVUYDjzDzDmnCW04G+NQGggoZjzwxr7NL9NMCw2bYdZyKggSG3gHtmJ06cUDFDQFst3E8DcM8Md9BwPy1HnfX9NEvYAffM2gAVNPjgw/dHv3zjjdKW+WmAeWYJZt954YVy8MChJpiBgIb7aSsOaoBg1tEGAAQ00PEJ6MwEAQ2NBDdv3lxKUANUzObvzAQBDUFtrqNPgI3nN3LXdUmdmSCgYTRH24MaoGIGAhqC2mtbW+XUmdMlALJS7tWtrVTe11gxAwENR58G3tbAgNkWVcxAQEPX57BXSIGVTG3rygQBDUHtz7/aLddu75bof+cnuF+WSnpHghkIaAhqN27cSLdWvxsKwAyzjgczENCwQqp+iHf/nhq4+N+zlUwgoKGhoO7o6k5VDRxj9rwjEwQ0NBS0vKoGqmWXX7+cO6UDPcYEAQ3Hny2sqoFqmWNMENBw/LnGqhqYXdZUtqfNLwMBDXR/rmlUB6iWnTx5clXHmCCggaoaCGX5IjR3tQwENHBX7S9vvVWqsDZ+WXmOyho4wvzK008v9G4ZCGjgCHR2ZQ1UytZ3hAkCGlgrFV//4jPla99+ZrBhDZWyKZ+LtYQyENDAEeggK2sIZVVluVNHmCCggbCWl1XfZqzh+LJ7oQwENBDW7vzt39Vxz+TgzVNnTpcuwFT/arDzxPHl0ae+0ItQBgIaaDDoUkcoqmTDuOgPAhoIa3fv3s3Lr/XVNVTJ8iXiyJEjQhkIaOAodOxOz8IDGwJZdWfS0eU0IKCB6tqdO3eal+ZKAhsCWf23dfTo0XmqZICABo5D6/tA9R023CEb+9tZ1rElIKCB49D/vPtumRrYJkcdDCC0CWPjI15iWiD7/OOPL/nYEhDQwJHo+B22WcdXHQ5twtjUY/DJO2RdObIEBDRQZasrKocPH25xtU1V7N69ew/1f1naCxDQgCkv+lkv+1Rfchy2xPAmhCVQpyI29v8ztDAGCGjAjGCwtgAngM3+PZcpAAENENxmBotIuIg6YCTMdTV01b+nyO8qpvy+lhfEAAEN0JBQ7mvC28fvfVTe+/i/UwLJ3gNKPLbvc7nUXmoJLNPk8vteQ+c0+ZlqabrIzxaL+vnqEBZLv7gPCGiAylu5r6m+RRPi6qDTJ3Ww3PfYZ+uKYapgJbpWCQMENECYm6heJdQ1qnAXCw15CVe1OmhFwtZYFW8toQvgE2Bc+n0wJVTiAAAAAElFTkSuQmCC'
    Local $bString = Binary(_Base64Decode($Speedometer))
    If $bSaveBinary Then
        Local $hFile = FileOpen(@ScriptDir & "Tacho_4bit.png", 18)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return  $bString
EndFunc   ;==>_Speedometer

Func _Base64Decode($sB64String)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode
#endregion

Edited by SmOke_N

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

  • Moderators
Posted

-Reserved-

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

  • Moderators
Posted

-Reserved-

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

  • Moderators
Posted

-Reserved-

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Posted (edited)

Speedometer.au3 Author: UEZ

;coded by UEZ 2012 build 2012-09-26
#include <GUIConstantsEx.au3>
#include <Memory.au3>
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)

_GDIPlus_Startup()

Global Const $hBitmap_bg = Load_BMP_From_Mem(_Speedometer())
Global Const $iW = _GDIPlus_ImageGetWidth($hBitmap_bg), $iH = _GDIPlus_ImageGetHeight($hBitmap_bg)
Global Const $hGUI = GUICreate("GDI+ Speedometer by UEZ 2012", $iW / 2, $iH / 2)
GUISetBkColor(0xABCDEF, $hGUI)
GUISetState()
Global Const $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global Const $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphic)
Global Const $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt, "int", 4)
Global Const $iRadius = 300
Global Const $iNeedle_size = 16
Global Const $fCenter_x = $iW / 2, $fCenter_y = $iH / 2
Global Const $hPen_needle = _GDIPlus_PenCreate(0xFFFF0000, $iNeedle_size)
Global Const $hCap = _GDIPlus_ArrowCapCreate(1, 1)
    _GDIPlus_PenSetCustomEndCap($hPen_needle, $hCap)

Global Const $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
Global Const $fRad2Deg = ACos(-1) / 180
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

Global Const $fDegMin = -223.5, $fDegMax = 44
Global $fDeg = $fDegMin, $fAcc = 0.75, $fKMH, $fMPH


Do
    _GDIPlus_GraphicsDrawImageRect($hCtxt, $hBitmap_bg, 0, 0, $iW, $iH)
    DllCall($ghGDIPDll, "int", "GdipDrawLine", "handle", $hCtxt, "handle", $hPen_needle, "float", $fCenter_x, "float", $fCenter_y, "float", $fCenter_x + Cos($fDeg * $fRad2Deg) * $iRadius, "float", $fCenter_y + Sin($fDeg * $fRad2Deg) * $iRadius)
    _GDIPlus_GraphicsFillEllipse($hCtxt, $fCenter_x - $iNeedle_size, $fCenter_y - $iNeedle_size, $iNeedle_size * 2, $iNeedle_size * 2, $hBrush)
    _GDIPlus_GraphicsDrawString($hCtxt, StringFormat("%.3i MPH", $fMPH), 240, 520, "Times New Roman", 24)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iW / 2, $iH / 2)
    If $fDeg < $fDegMax Then
        $fDeg += $fAcc
        $fKMH = (249.5 + $fDeg) / 1.33333
        $fMPH = Int($fKMH * 0.621371)
        $fAcc *= 1.005^2
    EndIf
Until Not Sleep(20)


Func _Exit()
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_ArrowCapDispose($hCap)
    _GDIPlus_PenDispose($hPen_needle)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hCtxt)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap_bg)
    _GDIPlus_Shutdown()
    GUIDelete()
    Exit
EndFunc

#region
;======================================================================================
; Function Name:        Load_BMP_From_Mem
; Description:              Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters:               $bImage:    the binary string which contains any valid image which is supported by GDI+
; Optional:                     $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
;
; Remark:                       hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;                                       Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
;
; Requirement(s):       GDIPlus.au3, Memory.au3 and _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Return Value(s):      Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
;                                       Error: 0
; Error codes:              1: $bImage is not a binary string
;                                       2: unable to create stream on HGlobal
;                                       3: unable to create bitmap from stream
;
; Author(s):                    UEZ
; Additional Code:      thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
;                                       Yashied for _WinAPI_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Version:                      v0.98 Build 2012-08-29 Beta
;=======================================================================================
Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
                                           "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _WinAPI_BitmapCreateDIBFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBmp
    EndIf
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

Func _WinAPI_BitmapCreateDIBFromBitmap($hBitmap) ;create 32-bit bitmap v5 (alpha channel supported)
    Local $tBIHDR, $aRet, $tData, $pBits, $hResult = 0
    $aRet = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($aRet[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $aRet[2], $aRet[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate(  'dword bV5Size;long bV5Width;long bV5Height;word bV5Planes;word bV5BitCount;dword bV5Compression;' & _ ;http://msdn.microsoft.com/en-us/library/windows/desktop/dd183381(v=vs.85).aspx
                                                                'dword bV5SizeImage;long bV5XPelsPerMeter;long bV5YPelsPerMeter;dword bV5ClrUsed;dword bV5ClrImportant;'  & _
                                                                'dword bV5RedMask;dword bV5GreenMask;dword bV5BlueMask;dword bV5AlphaMask;dword bV5CSType;' & _
                                                                'int bV5Endpoints[3];dword bV5GammaRed;dword bV5GammaGreen;dword bV5GammaBlue;dword bV5Intent;' & _
                                                                'dword bV5ProfileData;dword bV5ProfileSize;dword bV5Reserved')
    DllStructSetData($tBIHDR, 'bV5Size', DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 'bV5Width', $aRet[2])
    DllStructSetData($tBIHDR, 'bV5Height', $aRet[3])
    DllStructSetData($tBIHDR, 'bV5Planes', 1)
    DllStructSetData($tBIHDR, 'bV5BitCount', 32)
    DllStructSetData($tBIHDR, 'bV5Compression', 0) ; $BI_BITFIELDS = 3, $BI_RGB = 0, $BI_RLE8 = 1, $BI_RLE4 = 2, $RGBA = 0x41424752
    DllStructSetData($tBIHDR, 'bV5SizeImage', $aRet[3] * DllStructGetData($tData, 'Stride'))
    DllStructSetData($tBIHDR, 'bV5AlphaMask', 0xFF000000)
    DllStructSetData($tBIHDR, 'bV5RedMask', 0x00FF0000)
    DllStructSetData($tBIHDR, 'bV5GreenMask', 0x0000FF00)
    DllStructSetData($tBIHDR, 'bV5BlueMask', 0x000000FF)
    DllStructSetData($tBIHDR, 'bV5CSType', 2) ; LCS_WINDOWS_COLOR_SPACE = 2
    DllStructSetData($tBIHDR, 'bV5Intent', 4) ; $LCS_GM_IMA
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
        DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $aRet[2] * $aRet[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
        $hResult = $hResult[0]
    Else
        $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    $tData = 0
    $tBIHDR = 0
    Return $hResult
EndFunc   ;==>_WinAPI_BitmapCreateDIBFromBitmap

;Code below was generated by: File to Base64 String Code Generator v1.10 Build 2012-09-08

Func _Speedometer($bSaveBinary = False)
    Local $Speedometer
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= 'Pn8AAECFEL0OK4B5WKuzJaM3opaO1LCSqYcSfb4tTwAAqJqpIqZCSBYKc20ZvRE1rbVpIzX8vW5PYi+o5QkAAFUzVcTWITV6o6mtzqhhrc2xR2qoMpaVkr6eGNkBAIAnHnjcUzXzm56edpKM3jh77hwVtIa0NoO26Kqapi3A2appAACwEeD05SUXQge6WyHGDlRXBuCw9Jq2NpWgU9UzT4tTVbQQe/bs8WxGAACAlmZo1WxqaspdvHRx5KkD99x9d6MOVI+a2dr009criesvfX1sZhoAABi4XkzhLLhqNiSc1bnVSQVNw+q2fndrJ+SsTe0kUdgK8dbJk73ZLOEAAKBqtnvLrPv5r3+RqY2aZAIqaNXTsLrgg9DVpjxy5IgLoScix0QBABwnAgSHMy0hUjjLQllAmYAWZ002BmRobXrLo9e/vO4CW55sIAAAcCJAwFoztTTXu75bmUDZgIBWcWtT80/ypj63kvtYOIEAAAAt0rcTAQKqZnoNDu2KPbhzZ5VndRLQfGdthrY8leCdFycQAADYCHDo0CEXQMuM8pmKYGd1skmgqtam5p4EpOxSNxDoiZcOkwAAMD7j2GvHCnk9VydLWYGAVu5xTiXumLRD1ZmZBgBADWeJVj8bjYCmUwCqCjoq46q/HjjPpcDKHwAA1b8Who+moooWTdrGgGf273dV0eLFAwcOuBCqxE3gBgIAABsBNKlA4SykpamJCaV1wRTOlB0IaMXPPKt6GKy28OaxgSDT5gF9bXIZ92uLbPeu/bjmc80DANBrcPB6bBU6AtVqNhotTpt51oAyr20a8E1DDtwVo2pfEiqz9Ou16DP4dm0TR9sAAO3N8I0AtDqjidkYUCfW8lQfPesTVeHM1wa1cBZWqbNqneeJq7K1btPCWdjt6nvQDp/mVNUAAApaAbPNKqO5qQVkCQKaDkBVFaiG1HLNcui6t7yroJQ3hSVVxwaFJX1OgaoACnv2D2LiAQAUtMZc5mMnApSj7MPUCWhq9aksWfcn7DgnEHie1EVWm1Qdq6I6qZDWsKOvAICQpqKEZyNAIVWzNp0wEDXmMPTqaZ6LtTzT67J834f3/LCRVTq7nUzXrwCV9Tb1uSw++fRT1wAAAE83SK+B+rOctfKEge6EVM9iV3v2BNA7BzuBoBdo1KItbZiftSy9iybHCnvT09MuqWLq70QbCRS6kgB97do1d+Ozr93py0ueY7maAgCgrpCW0ARsBKhiEoM2xMVbv7u1Q0ALq57phT12k0eBSk8CtRb1pB0rZCroDDIzM5N1I4J22QwMbr2gaGvP4hHhbG2ojG+WtjMfi6XPTQoATMe3n6HpN8uaxTl63JP9PNy0aVOmn/nzL8wHBpz0Uhldnz6nj/1/HnY7dt2aSiA334THkzIuZDWgMWYjdKwGR2fYaI7+Iyu0diz5dT/PeA5V91LHV4WfeODf4KDbDQIA1Z+5rPA2tIWXvCnPg/3c9AcyvV5ql2LAbSt8WkCsBcZudB3qVHrVIkatCxu1yD92Js5aWRuLvbsKq9zVHwCm4yucVXM2pf9Nr3UzBv95eNXKOh26xKkOSkMp0LJJgOpZFkUe6lr4ws36hzMAsMqTdpjnUfHS9XjCWe4nz+g2pajbVFWxydSSVdYgoGUcSqtk21YFlZdVvg4YrxFWodPn6wQAtMTDuhVhPNcT/DPRgoS1ZHWbOWrj2mF1rDK8FhLQNEhOyXbcdQM6dkIl6ka9qyvqH1vBh7Rrt6d+8NS6sgaAyplag6PezGrNry5h7Pp2b5lV21DXqY/6WamPuujPddHPTsJT+VMXlDlYg5Z39Uz/yJJ+uUrUx48fz22Lb/yjv3DS+elfV7FJIHYFsV2cfrbrJ9v11x0AKmdD5nclL9r9b5Zj3xtOKxCEb7bSbc49Pxcnr2XeHZf+9cD69aD7r1DoC3sqgmgiQSM3hSS7cbVRwDbdDUVAe/PEibGfDD998W/itU86/cPTO5Ufvfzj9QQ1CyZ/+0rs'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= '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'
    $Speedometer &= 'ALC2qX3hDAFNSKubB4Z1Lw3AZoBmbVNLOzUR0DQPZHXHsDYPANgMkGd/R5oBcAdN80D/76UBuG/WoWYAVNCsh6rvpfXzyBPA8NkOr21CQLN5oCdHngA898Sz+eLdhvtmOOLEvDQAR5qbFzZHPZ5vhoBmXlq+dZ3fPF+6A8DKpv6P0MARp1Ec3TjyBNClOZQjTVTQaMrkcX33eouPPAF0aTbXU0q/oYJGPui5wxB5AGSpbmsAWHRed2kOLZwhoBnF0Rx55m5ayuj5xlbWBkDVLM/iPJMdaeKIs6HLc40NBAB2aeZ+8MSRJipoqKbFyhsIAMw2a8LZ5JEmKmjwwYfvjy6/frlcu727wgYCAOMzskvzxVdeLAcPHJodzhDQMDMtzQQ7v9kpiwWgESDP2U812wxHnJiZliXruQeRu2n7H92fb3plfgCqZnUjQJ61c4QzVNDQQDBPNQ2Ajec38qV3cVUzVNDQQFBX09JttHcAxmfk2Zln6FLHZ6CChrtpeci8c+ud8mAAgll1CrG8JecIaHDrn7dGV65cKVkV1ZTpty9ulwcDMNfs3Llz5fiXjq8snCGgoZpmJEcFUDVr9h2v864Z7qCh09NOzwpgh2bCWeaarb1DExU0HHumlN/IQ+nUmdNlYAADZ5uVea07zkRAw0iOepfcEI49AceZndmhiYCGJoK+z04DbALodhMAAhqaCFLyP795vvQEoDuz800AaBJAE0EeaFlv0tmVUYDjzDzDmnCW04G+NQGggoZjzwxr7NL9NMCw2bYdZyKggSG3gHtmJ06cUDFDQFst3E8DcM8Md9BwPy1HnfX9NEvYAffM2gAVNPjgw/dHv3zjjdKW+WmAeWYJZt954YVy8MChJpiBgIb7aSsOaoBg1tEGAAQ00PEJ6MwEAQ2NBDdv3lxKUANUzObvzAQBDUFtrqNPgI3nN3LXdUmdmSCgYTRH24MaoGIGAhqC2mtbW+XUmdMlALJS7tWtrVTe11gxAwENR58G3tbAgNkWVcxAQEPX57BXSIGVTG3rygQBDUHtz7/aLddu75bof+cnuF+WSnpHghkIaAhqN27cSLdWvxsKwAyzjgczENCwQqp+iHf/nhq4+N+zlUwgoKGhoO7o6k5VDRxj9rwjEwQ0NBS0vKoGqmWXX7+cO6UDPcYEAQ3Hny2sqoFqmWNMENBw/LnGqhqYXdZUtqfNLwMBDXR/rmlUB6iWnTx5clXHmCCggaoaCGX5IjR3tQwENHBX7S9vvVWqsDZ+WXmOyho4wvzK008v9G4ZCGjgCHR2ZQ1UytZ3hAkCGlgrFV//4jPla99+ZrBhDZWyKZ+LtYQyENDAEeggK2sIZVVluVNHmCCggbCWl1XfZqzh+LJ7oQwENBDW7vzt39Vxz+TgzVNnTpcuwFT/arDzxPHl0ae+0ItQBgIaaDDoUkcoqmTDuOgPAhoIa3fv3s3Lr/XVNVTJ8iXiyJEjQhkIaOAodOxOz8IDGwJZdWfS0eU0IKCB6tqdO3eal+ZKAhsCWf23dfTo0XmqZICABo5D6/tA9R023CEb+9tZ1rElIKCB49D/vPtumRrYJkcdDCC0CWPjI15iWiD7/OOPL/nYEhDQwJHo+B22WcdXHQ5twtjUY/DJO2RdObIEBDRQZasrKocPH25xtU1V7N69ew/1f1naCxDQgCkv+lkv+1Rfchy2xPAmhCVQpyI29v8ztDAGCGjAjGCwtgAngM3+PZcpAAENENxmBotIuIg6YCTMdTV01b+nyO8qpvy+lhfEAAEN0JBQ7mvC28fvfVTe+/i/UwLJ3gNKPLbvc7nUXmoJLNPk8vteQ+c0+ZlqabrIzxaL+vnqEBZLv7gPCGiAylu5r6m+RRPi6qDTJ3Ww3PfYZ+uKYapgJbpWCQMENECYm6heJdQ1qnAXCw15CVe1OmhFwtZYFW8toQvgE2Bc+n0wJVTiAAAAAElFTkSuQmCC'
    Local $bString = Binary(_Base64Decode($Speedometer))
    If $bSaveBinary Then
        Local $hFile = FileOpen(@ScriptDir & "Tacho_4bit.png", 18)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return  $bString
EndFunc   ;==>_Speedometer

Func _Base64Decode($sB64String)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode
#endregion

Edited by LaCastiglione
  • Moderators
Posted

@LaCastiglione

Thanks for the link, not sure what "udf snippet" you want me to do.

But I'm not going to create the udf snippet, or guess, so if you want to put it together out UEZ's code, do so and post it with appropriate credits.

Thanks

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Posted (edited)

Here another one besides the snippets I sent per pm to SmOke_N. ;)

_GDIPlus_SaveImage2BinaryString.au3

Func _GDIPlus_SaveImage2BinaryString($hBitmap, $iQuality = 50, $bSave = False, $sFilename = "Converted.jpg") ;coded by Andreik, modified by UEZ
    Local $sImgCLSID = _GDIPlus_EncodersGetCLSID("jpg")
    Local $tGUID = _WinAPI_GUIDFromString($sImgCLSID)
    Local $pEncoder = DllStructGetPtr($tGUID)
    Local $tParams = _GDIPlus_ParamInit(1)
    Local $tData = DllStructCreate("int Quality")
    DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
    Local $pData = DllStructGetPtr($tData)
    _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
    Local $pParams = DllStructGetPtr($tParams)
    Local $hStream = DllCall("ole32.dll", "uint", "CreateStreamOnHGlobal", "ptr", 0, "bool", True, "ptr*", 0) ;http://msdn.microsoft.com/en-us/library/ms864401.aspx
    If @error Then Return SetError(1, 0, 0)
    $hStream = $hStream[3]
    DllCall($ghGDIPDll, "uint", "GdipSaveImageToStream", "ptr", $hBitmap, "ptr", $hStream, "ptr", $pEncoder, "ptr", $pParams)
    _GDIPlus_BitmapDispose($hBitmap)
    Local $hMemory = DllCall("ole32.dll", "uint", "GetHGlobalFromStream", "ptr", $hStream, "ptr*", 0) ;http://msdn.microsoft.com/en-us/library/aa911736.aspx
    If @error Then Return SetError(2, 0, 0)
    $hMemory = $hMemory[2]
    Local $iMemSize = _MemGlobalSize($hMemory)
    Local $pMem = _MemGlobalLock($hMemory)
    $tData = DllStructCreate("byte[" & $iMemSize & "]", $pMem)
    Local $bData = DllStructGetData($tData, 1)
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data;ptr")
    Local $aCall = DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms221473(v=vs.85).aspx
    _MemGlobalFree($hMemory)
    If $bSave Then
        Local $hFile = FileOpen(@ScriptDir & "" & $sFilename, 18)
        FileWrite($hFile, $bData)
        FileClose($hFile)
    EndIf
    Return $bData
EndFunc   ;==>_GDIPlus_SaveImage2BinaryString

Reads a GDI+ bitmap from a handle and converts the bitmap to a JPG image in the memory. The result is a binary string of the JPG image which can be saved somewhere else. Example can be found here:

The code is based on Andreik's HBITMAP_To_Bytes function which can be found here:

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

I got great use out of this one, when i needed to show that something was still working, but no actual percentage of progress was able to be provided. All credit is UEZ and Malkey, I merely had the need.

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

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
×
×
  • Create New...