Jump to content
Sign in to follow this  
RichE

Watermarking an image

Recommended Posts

Hi Guys and Gals,

is there a udf to work with images, specifically watermarking images, either individually or in batch

thanks in advance

RichE


RichE

[font="'Arial Narrow';"]Current projects[/font]

[font="'Arial Narrow';"]are on my site [/font]Sellostring

Share this post


Link to post
Share on other sites

We have GDI+ that comes with AutoIt.


----------------------------------------

:bye: Hey there, was I helpful?

----------------------------------------

My Current OS: Win8 PRO (64-bit); Current AutoIt Version: v3.3.8.1

Share this post


Link to post
Share on other sites

This post provides some info on using GDI+ to make a transparent watermark. I've not used it myself, but it may point you in the right direction.


"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Share this post


Link to post
Share on other sites

Try this:

;coded by UEZ
#include <GDIPlus.au3>

_GDIPlus_Startup()
$sIn = StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\msoobe.jpg") ;this will not work when script is compiled
$sOut = @ScriptDir & "\Watermarked.jpg"
FileDelete($sOut)

$r = _GDIPlus_WatermarkImage($sIn, $sOut, "Watermarked by UEZ", 50, 50, 2,  "Arial", 64, 0, 100)

_GDIPlus_Shutdown()

If $r Then ShellExecute($sOut)
Exit

;======================================================================================
; 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
;
;Optional:                  $iPos:  possition text to one of 9 possitions on the image. If set $iX and $iY will be ignored!
;                                                   0: turned off
;                                                   1: upper left,          2: upper mid,           3: upper right
;                                                   4: mid left,                5: center,              6: mid right
;                                                   7: buttom left,         8: buttom mid,      9: buttom right
;                                       $sFontName: font name to use, default is Arial
;                                       $iFontSize: size of the font, default is 16
;                                       $fAngle:  angle of the text -> 0° - 359°
;                                       $iAdjY: adjust y position of the text when $iPos is selected
;                                       $iAdjX: adjust x position of the text when $iPos is selected
;                                       $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 or the handle of the bitmap (don't forget to dispose it when done!)
;                                       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:                      v1.00 Build 2012-10-31 Beta
;=======================================================================================
Func _GDIPlus_WatermarkImage($sBitmapFile, $sSave, $sText, $iX, $iY, $iPos = 0, $sFontName = "Arial", $iFontSize = 16, $fAngle = 0, $iAdjY = 0, $iAdjX = 0, $iFontColor = 0xFFFFFF, $fAlpha = 0.04, $iJPGQuality = 90, $bLineBreak = True)
    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 $iW = _GDIPlus_ImageGetWidth($hBitmap) , $iH = _GDIPlus_ImageGetHeight($hBitmap)
    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)
    Local $iWTxt = Ceiling(DllStructGetData($aMeasure[0], "width") )
    Local $iHTxt = Ceiling(DllStructGetData($aMeasure[0], "height"))
    If Not $fAngle Then
        _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
        DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hCtxt, "int", 4)
        If $bLineBreak And $iWTxt > $iW Then
            DllStructSetData($tLayout, "width",  $iW)
            DllStructSetData($tLayout, "height", 0)
            $aMeasure = _GDIPlus_GraphicsMeasureString($hCtxt, $sText, $hFont, $tLayout, $hFormat)
            $iWTxt = Ceiling(DllStructGetData($aMeasure[0], "width") )
            $iHTxt = Ceiling(DllStructGetData($aMeasure[0], "height"))
        EndIf
        If Not Int($iPos) Or Int($iPos) > 9 Then
            DllStructSetData($tLayout, "x", $iX)
            DllStructSetData($tLayout, "y", $iY)
            _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
        Else
            DllStructSetData($tLayout, "x",  $iAdjX)
            DllStructSetData($tLayout, "width", $iW)
            Switch $iPos
                Case 1 To 3
                    DllStructSetData($tLayout, "y", $iAdjY)
                    _GDIPlus_StringFormatSetAlign($hFormat, $iPos - 1)
                Case 4 To 6
                    DllStructSetData($tLayout, "y", ($iH - $iHTxt) / 2 + $iAdjY)
                    _GDIPlus_StringFormatSetAlign($hFormat, $iPos - 4)
                Case 7 To 9
                    DllStructSetData($tLayout, "y", $iH - $iHTxt + $iAdjY)
                    _GDIPlus_StringFormatSetAlign($hFormat, $iPos - 7)
            EndSwitch
            _GDIPlus_GraphicsDrawStringEx($hCtxt, $sText, $hFont, $tLayout, $hFormat, $hBrush)
        EndIf
    Else
        Local $iQ
        $fAngle = Mod($fAngle, 360)
        $iW = Int(DllStructGetData($aMeasure[0], "width") * 2)
        $iH = Int(DllStructGetData($aMeasure[0], "height") * 2)
        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
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hCtxt)
    $tLayout = 0
    If $sSave <> "" Then
        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
        _GDIPlus_BitmapDispose($hBitmap)
        If Not $bRes Then Return SetError(3, 0, 0)
        Return 1
    EndIf
    Return $hBitmap
EndFunc

Edit1: forgot 2 lines which are added now

Edit2: added some more features

Edit3: the backslashes were gone - added again

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

There we have it... The GDI Dude UEZ !!!


----------------------------------------

:bye: Hey there, was I helpful?

----------------------------------------

My Current OS: Win8 PRO (64-bit); Current AutoIt Version: v3.3.8.1

Share this post


Link to post
Share on other sites

misunderstood

I made watermark for the GUI

have a look if anyone is interested

#include <WinAPI.au3>

$hGUI=GUICreate('Hello')
$_Path=@ScriptDir&'TC3.jpg'
If Not FileExists($_Path) Then _FileInstallEx(JpgBin(),$_Path)
CreateWaterMarkGUI($hGUI,$_Path)
GUICtrlCreateEdit('Hello',10,10,100,300)
GUISetState()

While GUIGetMsg()<>-3
Sleep(10)
WEnd


Func CreateWaterMarkGUI($hWnd,$nPic)
Local $Struct=_WinAPI_GetClientRect($hWnd)
Local $_Pos[4]
For $i=0 To 3
$_Pos[$i]=DllStructGetData($Struct,$i+1)
Next
$hMain = GUICreate("", $_Pos[2], $_pos[3], $_pos[0], $_pos[1], 0x80000000, BitOR(0x00000008, 0x00000040,0x00000020),$hWnd)
GUISetBkColor(0xABCDEF) ;Set GUI Colour
GUICtrlCreatePic($nPic,0,0,$_pos[2],$_pos[3])
WinSetTrans($hMain,'',15)
GUISetState(@SW_SHOWNOACTIVATE)
GUISwitch($hWnd)
Return $hMain
EndFunc


; #FUNCTION# ====================================================================================================================
; Name...........: _FileInstallEx
; Description....: Writes the Binary Data into a File
; Syntax.........: _FileInstall($sBinData, $sFile [, $sRecurse = 0])
;                  $sBinData  - The Binary Data to Write to
;                  $sFile    - The File to Write the Binary Data
;    $sRecurse  - Overwrite If exist already [Default 0]
; Return values..:
; Author.........: Phoenix XL
; Modified.......:
; Remarks........:
; Related .......:
; Link...........:
; Example........:
; ===============================================================================================================================
Func _FileInstallEx($sBinData, $sFile, $sRecurse = 0)
If StringInStr(FileGetAttrib($sFile), 'D', 2) Then Return SetError(1, 0, -1)
If FileExists($sFile) Then
If $sRecurse Then
FileSetAttrib($sFile, '-RS', 1)
Else
SetError(2, 0, -1)
EndIf
EndIf
Local $hFile = FileOpen($sFile, 16 + 8 + 2)
FileWrite($hFile, $sBinData)
If @error Then Return SetError(4, 1, @error)
FileClose($hFile)
If @error Then Return SetError(3, 1, @error)
Return 1
EndFunc   ;==>_FileInstall

Func JpgBin()
Local _
$JpgBin = '0xFFD8FFE000104A46494600010101012C012C0000FFDB0043000503040404030504040405050506070C08070707070F0B0B090C110F1212110F111113161C1713141A1511111821181A1D1D1F1F1F13172224221E241C1E1F1EFFDB0043010505050706070E08080E1E1411141E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1EFFC0001108012C01C203011100021101031101FFC4001D000100010501010100000000000000000000050203040607080109FFC4005410000103030105050407050407030A070001020304000511060712213141131422516132427181081523526291A1334372B1D18292C1E116243473A2B2F01753C225263554637483A3B3D3446494B4C3D2F1FFC4001B01010002030101000000000000000000000002030104050607FFC4004111010001030105030A04030606030000000001020311041221314151051361062232718191A1B1D1F04252C1E11433621534728292F1072353A2C2D21624B2FFDA000C03010002110311003F00F6382A4F3CA8798E7F3A0AC104020820F5141F68140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A050282852F8EEA464F5F21F1A0617F7FF4A0AE82828E3BC93BA7AF91A02563'
    $JpgBin &= '212AF093CBC8FC282BA05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05052A504F33CF97AD053852C78B291E439D05600030060507DA050283E1008C1191414E149E5E21E479D07D4A82B91E5CFD282AA05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A050282DEF957B18C7DE3CBE5E741525213C7893D49E74155028140A050281414A9215C791E845053BE53EDE31F7872F9F9505CA05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028141429601DD1C55E4283E04957159CFE11CBFCE82E5028140A05028140A050281416CA4A78B7C3F09E5FE541525409C1E0AF234155028140A050445FB52E9DD3E80BBF5FED56A4AB919B31B641F86F114109FF699A317FEC77393731F7AD96E93353F9B2DA8507DFF00B47D3DD20EAA23CC696B8FFF006283E0DA569549FF005855EA1A7AAE5D8673081F152D9091F9D06759B5D68ABD49116D5AB2C73251FDC333DB53A3FB19DE1F9506C940A05028140A05028140A05028140A05028140A05028312E770816C8AA95729B1A1C74FB4EC8752DA07C4A88141AC9DA768257089A9E15CD5F76D9BD355F93016681FF0068FA748CA61EA958'
    $JpgBin &= 'F34E97B8FF00F6283E1DA469B4FED23EA56879B9A66E2903E24B18141722ED2740BEFA63FF00A61656242CE12C4996961D27CB71C2159F4C506D4CB8DBCD25D6569710A194A927208F4341728140A0507C5109192702828F12BF0A7F53FD282B4A424600A0FB40A05028140A05028140A05028141F1490A1822828F1279F893FA8FEB415A4850C83914115A8AFF65D3B09332F772621B4B5F66DF68AF1BAB3C90DA47896B3D129049E82835A73536ADBD6469BD3E8B5443CAE17D0A0B23EF222208591E8EAD950FBA6830A4E989770F16A4D517CBB13CD86A4983187A0447DC5293E8E2DCF89A0FB6AB0D86C2B52EC961B55B5C57B4E458686D6A3E6A52402A3EA4D18CB5ADA245DA3DD9691A575CC3D3ED0461417674C9754AF3DF5AF0072E0119F53432E437BD9EEDF5E714B6B6D2EB84F40EBD147E4D820567065AE4AD23F49BB61ED226BC9D72239066FAE1CFC9E09158C1946DE757FD22AD110A357595FBEDB9BE2E26E7638F3E363F13884103FBD4657F467D20A3405A112B4E4DB0EE9C76DA5AE4B8ED37F084F7691D47E205077DD9DEDBD17E534C5AAF76AD4CB56077192916ABB7C1295931E42FF00854D2683ABE9CD6364BE4D55B5A79E83754237DCB64F68C794848E6A0857B68CF0DF46F20F451A0D928140A05028140A05028140A050281418D365468311D99324331A3B282B75E796108424732A51E000F334'
    $JpgBin &= '1A72F5DC9BB1DCD17607EF283CAE32966240F8A5C29538E8F2534DAD07EF8A0C57AD1A9EE637B50EAF96DB679C3B2B7DC5AC791732B7C9FC497119FBA2831A3690D2F025098CE9F80ECD1FFE325B7DE657CDE7779C3F35518CAD6B356AB9B6931B4DDFE259E5EF7FB44881DEC04E3925256900F2E27787A50CB8B6A2D0DB7A9AB52D1B6B3F06A29863FF00922865A9CDD07F491884B91769B2676392517D92927E4B481FAD6706580FDDFE94F63614D4B379BAC5C616D18D1AE4950F5484AD58F8D6194558B6DF32CF705B57BD056C85292AFB672C4EBF639455E6E762ADD59F4523141DB367FF00483B7CF536C46D60D874E0770D5D1D31CA8F9227464F6691FEF1A2A3E741DAAD5B41B538F478B7F8F234E49925298FDF548316493EC8664A0969655D12541647B828375A0A0AF2709193D4F4140423077947795E7415D028140A05028140A05028140A05028140A0F8480324E00A0E5BA8B692EDCAE8D59740B02E125FCE2706FB46D69070A5328DE487520F02F29486527805AD7F6642734968B66DB3957CBCB8A9F7E793BAE4B79D2F2D20F1284B842709CFB884B6DF23D9839243667D3E9411F2134451CF20A8E050632E138BF79228CE161CB438BFDF207C8D67261655647FDD79A3F1C8A64C2816EB94658719077872536BE3596103A9B47E8BD5AA2CEB1D2B024485F0EF819EC640F8B88C2FF5C7A5630CE5C7F5FF'
    $JpgBin &= '00D154A12E4BD0B7C2BC71102E4464FA25E48C7C0293F155619695075EEBCD012D9D29B4BB148BCDB58585B516E6A5090C63807624A49DE491D1495103924A79D07A47665B4B372B477FB1DC25EAEB23407798AEA00BD5B07E240E12903A11F6870705E5720EBB64BB5BAF96D66E96998CCC84F025B79A5641C12083E44104107882082011412140A05028140A05028140A050689AFB68D6DD36E396F86DA6E578494214C2564371D4BFD9879694A8852BDD69095BABF710A19202334FE8FBBEA394CDF35F3CA94B4283B1603A809698239292C02A436474528BAE8E0438DE4B603A03ADA509DD48C0A0C0909E74451D213924506239156BEA91F134670B0E5A9C5FEF503E46A46160D8DEF75F6CFC41158C985B5D9E6A38A3B3591F75583FAE29930C1BE5AEDD788C216ADD3F0EF1140C0EF9192E291FC2A2381F5073EB5961CBB5AFD18748DE5854ED197293637D637931DE2644627CB89DF471EBBCAC79545272E6A0ED73626F3B1AE296D5A71D250F32F8EF96B9693CD3B87D92AF23B8A3D7850764D8E6D52DF7A4B703474945BE6A78AB4B5D64A8C77C0E7DCA41C96B97068828006021232BA0EEFA4F53DBB50A5F663A5F877089BA265BA5A03726293CB7920905270775692A42B04A544506C140A05028140A05028140A05028140A05028312E73A1DB2DF22E17194CC48719B53AFBEEAC250DA123254A2780005079C'
    $JpgBin &= 'B6C7B49BAEA1BF5B343D8E0976E17B5845BAC7202905D6CE4997711ED2180905423702A4A4977865AA0EDBB3AD1B0B47D9D4C3721DB85D2514B972B9BE076D31D03009C704A123821B1E1427000F30DA57BBB877B18C71CF2A084993DB4AFB38C0BA738F4F979D069BABB5DE9BD3ADBAE5E6F0DA5C6BDB8EC8ED1C47A2923823FB653F1ACC44CEE86266237CB93DCFE9171254D55BF47E9A917695EE270B7D6AFF00E13231FF00CCAB62C57CF72A9D451C2378DEA8FA455F3ED2D3A1A6406CF47A146898FF00F54B59A7774C71A98EF6B9E14AE772FA4EAFC4AB7389F4173B60FF00F848A6C5BFCDF036EEFE5F8A954FFA4A5AFED2658273ECA7890DB36E984FC9A2DACD3BBA27854CF795F3A5651B77D51617D0C6B2D26CC4528EEA112E3C9B53ABF5CBA1C68FF7D22B1DCD5CB79DFD3F8B737ED3BB64D11766D913E4BD6353CADD695724A446755D4224A0A9957CD43E155CC4C715B15455C1D15B5A56DA1D4292B42D21485A4E52A0791047023D6B0CA3B5469EB1EA8B4B96AD416C8D7186BE3D9BC9CEE9FBC9238A55F89241F5A0F34EBCD8C6ACD9B5E06B2D98DC26C98F18959651E2951D3D4118C3CDF98C671CD2402AA0DFF63BB426F5B2DEBC69C544B3EB56D01CBADA9C594C2BC20003B4EA52BE403A015A3805871012283BA692D470B51C071F8E87A34A8CE76336148012FC478004B6E0048CE08214094A924292'
    $JpgBin &= '4A48242728140A05028140A05028389EDCB6BF034E58A7390EE0B89023B8A8D22E2C1497A44819062C30A052A701042DE20A1AC11852C1080CED81E84950EDB17586AC84962FD290A761DB86F29BB3B4EF1290544A9721638BAF2C97144EE9381C43AF50465C66C760946F6FAFEEA7A7C4D06ADA9352DB2CCC87EF5738D6F42C65B42D5E3707E140CAD5F2068397EA4DBBD820BFDDAD56E7E6BE4EEA4C8743393D30DA02DC3F309AC4D510BE8D35DAF7C528F46B5DB45FC66C5A2A54442BD873EA82DA48F3DF92E60FC776B1B5D213FE1A29F4AB88F8ABEE5F49090779519E64F90956C47E81B34CD5D0EEAC7FD4F84A85B1F493860A84490F2473FB4B63DFA6E24FE46999E877366785CF84B15FDA96D534D78B53E8F1DD91FB47E55A64451F275A53ADFF00C34DAEA7F09357A1544FB5B3692DBBE98BBE1173B7CFB51C656F3644D8C81E6A5B5E340FE26D22B31313C14DCB35DBF4E30E9B66BA5B2F16F4CFB2CF873E128E13222BA971BCF51949C67D0FE55956C97D8624C7763C965B7D975250EB6EA42D2B49E6140F023D283CFDB5AFA3A4396A72F9B3C5A6DB3D07B436E539BACAD438E5A5FEE959E409DDE58DC02823B661B469373BC46D1BB477A658B575B9658B55F8A43725A59C7D8BDBC30A0AE1C140A1CF0EF0DEDD590F46E93D512645C0E9DD46CB30AFEDB65C4765911EE0D0C02F304F1E191BED9254D9233B'
    $JpgBin &= 'C9285AC36FA05028140A05028140A05028140A0505A79D6DA6D4EBAB4A108054A528E00039927A0A0E05B68DA23317474BD793DB0BB1C0524E9EB739902E5289FB294E8EA8046FB68E894974F8BB3DC0F2DFD1BB6B10F4A6D92E1AE75AC7B85EA4DCA2BCD2DF64214F36EAD6856F80A2918C24A7008C0381C385473BD38A730F72686DA1BBAF62BAFE9CB3BD11848052FDC48E04F428413D0FDEA4559E0CD546CF1486A8B8FD436E0BBA4A993D612A716A6D918E1C790C2523A0C9CFA9E26B3BD18889DEF3C5DF5BED27697759365D9F40540B6A145A913DD5969947985398DE51E3ECA47C52471ABE8B511BEB9F635ABBD356EB71ED6D3A1B607A6ADAB44FD5F7499AA2E1CCB6B5166220FE1692727FB4707EE8A9CDDC6EA630845A899CD73975FB2B36BB1C14C1B45BA15B62A79351184B48FEEA401F3AAA733C5746237433FBFF00E2FD6B18672F9F587E2A60C9F587E2A60CA89129A90C2E3C8436F32E0C2DB71214950F220F034C319733D55B1CD0B765BD2ACF19DD2F7075385BF6821A6DC1F75C60E5A5A73CC6E8CF9D59172AE13BD5CDBA78C6E72F916EDA36C79D5CB89250E5912A2B72542614EDBC8EA64C2C9547CF57639C240C6E926B336E9AFD1DD3D188B95D1E96F8EAEB7B35DA9D9B56AE35BE52116BBCC8415B11CBE1D626A4735467870740EA8E0B49C829E04D513134CE25B14D5154661D041F2AC32E3F'
    $JpgBin &= 'B57D90AA75D93ADB67EF26CDAAE2B9DBEEB6421A96B1CF3D12B3C4127C2AC90AE6554137A3EF33B565ADAD5B688A9B4EB5B5660DD2DEFE5B43E51E2545781E210ADEDF6DCE25B2ACF105C4AC3AA695BF42D45676EE5052F201529B798793BAEC77527756D389F756950208E5C3209041212F40A05028140A050738D7DA89570933AC16F9EB816D8092ABFDD1B70A0B29DDDF319A58F65C28214B58E2DA08C616B4A921E06D57B4D6752ED86CDA8E45B42F4C58E7309B6D990021B44369C49ECC27D90A584F1F881C80C46A94E88CBDDBB38DB4D9B68129A634E592EC02BF68B981B6C207F614BCFE948AB32CCDB988CCB7ABAADE8909F992A5294940C86DA1BA3E0327893EA71F0E344237B866BEDA25F245E069AD196F7DFB8AB988E52B753E64AB8A1A48FBC72797B3519AF7B6EDE966A8DAAA711D7E8C6D35B17977490ABA6D0AFEFBEF3C779C8301D500AF475F5656BF50303C8D67133C52EF28B5FCAA77F5975BD2BA7B4BE956035A76C502DBC3056CB43B450FC4B3E257CC9ACC44428B95D773D29CA73BF7AFEB59CA1B277EF5A64D93BF7AD326C867EE9C0277BC81FE74CB1B2D3B56E81D17A9D2B5DCACAC352947784B85FEAEF857DEDF46378FF167E15198895F45EB9470971CD43B27D65A2AE2E6A0D0579973C8E2AEC54199FBA38E1631D9CA1D485A727901D69BE1662CDEE31B33E1C13DB39DBA4692B16BD72D'
    $JpgBin &= 'B56E9085F646E486CB4C85E71BB21A2498EACE06F64B79246538C54A2A896BDEB15DA9F3B875E4EDA950524292414A8020839041E2083D45654B47DAD6CC74FED12D9B9390225D1A414C5B836805C6FF000A87BE8CFBA7CCE08268357D9DBB7996DAF665B442FC7D436A025D9AEEC2FC6FB68F0A5F65C238B88DEC1C8F125452B491BE0875CD11A8654E72458AFA9699D41012953E1B494B52D924844968124EE2B0414E49428149246EA941B5D028140A05028140A05028140A050739D7B346A3BC2F49B4ADEB544DD5DEC8E5214405370FE0410B707DC2841C874E03867D31B47EB6D6B67D3B0B4ADB1DB930CCA79D98D21D4248594A436A3BC464005D19E99E3CE834ED8EFD17AE6998C5D35ECE661B482142DB0D61D717E8E39C5291E89DECF9A6A331994E2AC461EA63A8B4EE84B5478298F160416DBC86DBDD404F40027AA89F3F251CF0ACD31BF10C553BB3328AD4888FAF61C7917343ACDA7DA4C5DEC29FF2512388491F3F80209B623655D5398C2FC47224088D42811D98B1594EEB4CB28094207900380ACEF957988DD0B9DFCFDEA60C9DFCFDEA60C82791C95C3A8E94C197D13B7BD93C7CBAFF009D0CBE77F3F7A983277F3F7A983277F3F7A983277F3F7A9832E41B46D9930B126EDA3A2B0DB8EAC3F2ECAA5F651A52C7271923FD9E40F7569C0E878156F5B1315462B5534CD33B5426F635B5754A5C7D3FAA65'
    $JpgBin &= 'BCE29C7FBA43B94A4F66F26471FF00539A9F71FE0775CF65D03A2C285515D1344EF5F6EE4570ED79E86A0B1436CB0890E49430D25E74252E3A100296139DD04F32064E33CB27CE8206ECEAB4A5F15ABE3929B63E12DDFDA03806D23751300FBCD0C059EAD7139EC90283A3A541490A49041190475A0FB40A05028141AA6D0AFD2AD9123DAACEB40BDDD0A9B88A5277931D09C76B2569EA96C28607BCB5368E1BD901CAF6BDA72E8EEC46FBA6746C771E9EF44EC9A42DD1DA3FBEE053E54B56379C5A4BA544FB4A51EA683CCDB38FA326BCBC4D43BA90C7D370010545C525E90B1F8508240FED2863C8D62632953561EC2D0D66D3FB31D2C225AC2C3680029F94F6F38F2BF12BA0E670900000E0563833E9710EAD5EB58CFC2B6AFB08293BAECD48E1BDD508F338EBD387CE3B5B5C1B54D98B58AABE3D172C96FB4D822AA35AA32190B3BCEB9CDC755F796AE64FE83A6291111C18AEBAAB9CD4CEEFBF8AA5943077DFC54C983BEFAD3261F7BE70C956079D32C61F0CEE89240F3EBFE54C987C1340E4699670FBDF7D6993077DF5A64C347DA5683B2EB2419808B7DED08296A7B4804A8631B8EA7938823860F4E1CB20C6632BADDD9A236677C74737D9F6BABFECB2F674AEA98CEB9666FC4A8E825C315BE3FEB110F35B3CCA99E69C1527185A4669AB3BA55DFD3C531DE5BDF4FC9E9681322CF84C4E8325A9516436975979A56F'
    $JpgBin &= '21C41190A49EA08A9B5171C61875D65D75869C71851534B520153648292527A12091C3A122822F53DB254D6E35CACEE34C5F2DAB53D6F75C384289002D8708E3D938004AB9E084AC0DE4268367D2B7A8BA82C51EE9110EB21DDE4BAC3A9C391DD4A8A5C6963A2D0B0A49F5079D04BD028140A05028140A0502814105AD6F6AD3FA79F9CCB2244D5A92C418EA5603D21C212DA09E89DE20A8FBA90A3C85069963802D96D6E217D525EDE53B224A861521E5A8A9C748E854A24E3900401C00A0CF06822B58EA1B7E95D3332FB73792DB11D07701F7D78E03FAFC80E24566299AA710C4D514C665C1740B575D7DA817AEF55973EADED09B64073D9731FBC58E440E83AE3EE800ED4D116E36638B53BC9BB3B5570E4EBCE5D14BE6B26ABD959B6B467E7AD6708ED1DFBD6B383277EF5A60C9DFBD6983277EF5A60CAA1700AE0B3FDA1CFF00CEB1836854C5019C8293C88ACE0CA9EFDEB4C19436A1D6768B0CDB643B94B4B4F5CE488F1D24F356399F219C0CF99155D7722898895372FC513113FED1D6533DFBD6ACC2ECB9FED3B4C26E45EBFDA213522E259EC67C151DD6EEB1C60F64BC727060143838A5413E43128C4C6CD5C109CC4ED53C5BB6C136802F90D9D3B739EECC9498E5FB54E7C61D9D19070B43BFFE6593E1707BC30B1904A8EB574CD33896D515C5719875E8ED878290938779A47457A7C6A29ADA82549285A42924'
    $JpgBin &= '614950C823A822823F66EFAAD6F4BD1721448B6A12F5AD6A392E41592108C9E65A505347AEE869478AE8377A0502814169F71B61A5BCF2D2DB68495296A3809038924F4141CB6CD21CBCCD95AB24A54972E61221A163058849C96538E857BC5D575CB8127F66282581A0296DB6DADD79C4B6D3692B716AE4948E67FEB9F2A0E13A8EEF3F695AD5EB4407DE8BA7E02B12DE49E38CFEC92796FAB1C4FA750003555BE710E969E88B54F79546FE51FABA55B9C8D6E80CC182D263C6613BADB68E491FF5D799359C21566A9CCAE99BEB59630F9DF78E37A86CBEA66151C0249A185466253EF6F2BE3C07F5A31852671272559A1B277DFC546764EFBF8A86C9DF7F150C1DF7F150D93BEFE2A1B2D7B5DD86DFAB6D1DCE5A8B32593DA43968FDA4773A29279E380C8EBE840231319596EB9B739693B16D6D3741EA67746EA7298F6A76404AB8E1B82FACF85E47DD8EE920287B285A82BC2145352A6ACEE951A9B11479F47A33F0F07A69A08ED771E2A40E44FDD3EB526A3EBC8534E16D6388F2E46820623DFE8E6B86E40F0DAF50B896640F7599E9461A73D03A84F664FDE6DA038ACD0742A05028140A05028140A0502839C6AA95F5B6BAEC01CC4B035803A198F2389F8B6C280F5128F950540D056DA4AD694271951C0A0F376D7AF0ADA56D3D1A4A23CBFF0046EC642E7290480EAF3ECFC49F98E3F7056DD9A7629DB9E32D2BF5ED'
    $JpgBin &= 'D5B11C238B72664B6C328619421A69B4842108184A52060003A014C31955DFB80E34C193BF7AD3064EFDEB4C193BF7AD3064EFDEB4C193BF7AD3064EFDEB4C19548B82907215F11D0D30656AE178870E0BD364BC98ED3282B70A8F0C0F23FE150AEA8A23328D75C531964ECC3654DEB7D3777D57AFA1B8D4BD450CC6B5C658F1DAE193BCDB89CF2794A09733D0048E1950AD58899DF57195F62C6CD3335EF9AB8FD3D5082D3572B9B2DCAB1DFF0009BE599F30AE00725A920143A9FC2E20A560F92AAFB356636678C35E9CD1336E797CB97D3D7097EFDEB57613CB44BF469166D52C5CECF2130BBFCC43D1DE3C130AE83834E9E81B787D8BA0F03BC952B380295D3B74F8C33455B15784BD2DA175247D53A5A05FE236A8E5F410F4757B719F412971A5678E52B0471E6003D6B51BAD8E490E25125231BFC163C9439FE7CE835AD5EE9B5981AADBC85595D2E4AC7BD09CC26483E89484BD8EA5848A0E8A082320E41A0FB40A050691B569224C085A5D273F5CB8A4CB03FF00526C053E0FA2F2864F976F9E941825454A2A3C4939341F41A0E67B7BD4D2A14089A4ECCACDD6E8B09383EC0E793E4120851F520FBB51AA710D9D2D98B95E6AE11C51FA56DF134ED8D8B5C3E296C6F38E11C5D59F6967D4FE8303A54237372BAA6BAB3295133D6A48618B75BDB16D84A9520AC804210DB692A5BAB2709421238A944F00055755714C'
    $JpgBin &= '65758D3D57AAD989C446F999E111CE67EF333BA333310D8ED1B29BC5CAC8AD4177B8BB6ED5AE90E42610E15C782D7FEAEE241C39BFFBC574206EFB3E28F73331B533E77CBC3D5D7AFBB139ED6A68ABBAB74E6CF389E357F54F4ABF2E3D1E1BFCEDA8062EB23BCCAB64D8AE5BAE50D7D9CC88E1CA90AE873EF21438A543811F3A9535E774F1862FE9A28A62E513B5455C27E713D2A8E71ED8CC4C4AF77CF5AB1AF83BE7AD0C1DF3D6860EF9EB430C369DBCEA1BE274C696083715242E5CB5A7799B7327F78BF359E3BA8E6A3E401354CD5354EC53ED9E9FBFDFAF728B76F4F6E351A88CC4FA34FE6F19E94C739E333BA39CD337AC343BFB3BB6B775B3C89D71B0A503EB5121C2EBD1DCF7A583D50A3C5C48E09F680C6F6134773BE9E1CFEBF5F7F1E2B3ACFED39EEF5131173F0D5BA23FC13CA23F2CF0A7D19F371B31E89C95A12B42D2A4A8652A07208F315644E6330D5AEDD545534D51898E2FBDF3D6A48E1A5ED52C69BD5AC5CA2B0876E1090AF011C243241DF68E389C8271D739C609CD467AC2DB78989A2AE12E89F474D687526923689B256FDC6D084252EB872B9311590CB87CD49DD536BC7BC8CE7C55644E632E5DCB736EB9A6793AD0576F1083FB464647AA3FCAB2822750DB1BBD5925DADC794C17D186DF4FB4C3808536EA7F121612B1EA914135A22F2E5FB4C42B8C9692C4C214CCC652721992DA8B6F207984B8'
    $JpgBin &= '95807A819A09DA05028140A05028140A0B329F66346764BEE25B65A415B8B5724A40C927E541CA74C179DB3B73E520A255C94AB8484ABDA42DE3DA041F5425496FE0D8A09406835ADAC6A7468FD9BDE2FA48ED832588E93EF38BE1F97100FA2B353B746DD51085CAF6299A9C1367705766D3C83254A5CF9AB32A638AF694E2B8E0FC07EB9F3ADDAE733B9CFA2311BDB1F7D3E7504DF7BE9C73A60CBE77D3E740EF87CE81DF4F9D03BE1F3A077C3E740EF87CE81DF4F9D3032766FA5D7B53D705A9692AD21A7DF4AA7E47827CC18288DEA847052FFB29F7B234ABAFBCAB3CA387D7E869E8EF6AEF678470FAFE91EF7AA12D94FB18C7DD3CBE5E54741C47E921A6D56D99136916F69494329440BEA00F6A3957D93E7CCB6B5609FB8B3D1158DAD898A9A9A9B7988B91C63E5CFEBEC73CEFA7CEB7A37EF8531313BE18B77447BADAE4DBA60DE624365B58EA33D47A83C47A8ACC6E277EE6D7F473D47211A824D9EE0EE5CBBA1C75CE3C3EB28A1299047ABCC965F27CF7AB52E462A986D58AF6A9C4F1877E8CADE438C9F78653FC438FF51F3A82F5875B69E656CBEDA5D65C49438850C85A48C107D08E1415ECBA43CBD20C5BE4BAA7655A5C72DAF2D672A5F62A28438AF55B61B73FB741B55028141CCAE523EB1D73799C4E5B841BB5C7F21BA90EBCA1FC4A75083EB1C505D0682A4B8DB495BEE8CB6CA0B8B1E6074F99C0F9D079'
    $JpgBin &= 'E2DB3D7A8B5A5DF57CA5F680BAA8B089E5B809DF58FE2567F51554CE65D6B747776A29E73BE5B0F7CF5A3385B9173622B0E4892FA1965B4EF2D6B5600158AAA8A6332B2D59AAED514511BFEF33EA8E333CA1D37647B3F7CCC6358EA78EB4CD4826D705D4FF00B1A08FDAA927F7CA1E7EC0E1C0934B744E76EBE3F2FBE6D6D6EB299A3F87B1E8739FCD3D7D51F863DB3BE777624A4247015739AD136A5A09AD5711B9D01C6E0EA1869221CB29F0B89E659740E2A6D47E693E21D41AAE51B7BE374C7DFB9BBA2D6CE9A669AA36A8ABD28EBE31D2A8E53EC9CC4CC4F0B4CC92D4A9102E115D837188BECA5C477DA6978CF3E4524710A1C140822A14579DD3BA61D2BFA78A222E5B9DAA2AE13F389E931CE3DB1989899B9DF3D6A6D7C1DF3D6861F2D8D5E7535F51A6F4CA12A9EA485C994E2779980D1FDE2FCC9E3BA8E6A3E401355CCCD53B34FB67A7EFFEFEBDAA68B5A7B71A8BF1989F469FCDEBE94C739E333E6C6FCCD3E87D05A4AD3A2EC08B55AD0B254A2EC992E9CBD29D3ED38E2BA93F901803000AD8A288A2310E1EA3517353726E5C9CCCFDC4447288E1111BA21B229295A4A5490A4918208C822B2A9E74DA669177404D370B736A3A5253B8DD1C7EAC7547820F932A27C27DC2777914D6AD51DCCE7F0FCBF6F93D169AEFF695316AAFE74709FCF11CA7FAA397E68DDC623301DF3D7F5AB5A9B277CF5A1869FA62E89D'
    $JpgBin &= '05B5889724A8356B79CFB7E89115F5250F27D7B373B3740E8127CEB344EFC29D651B5445CE71BA7F47AD195962402A1EC92143D39115639C3A9ECDD52339093807CE8303462FB86B3BE5A49C3339B6AEB1C74DF23B17D23D016DA59F578F9D06EF40A05028140A05028141AA6D597BDA1A6C1271F59AD9B6A88E61321D432B23E095A8FCA8219A6CBEDC992AF0A5B1BC71F7947007F33F2A0B20D079E3E9B37D537174F6976D7C141535F4E7AE308F910AFF0082B73494EF9A9A5ADAF1114B47D05A80DCB4FB4975799318069DC9E2703C2AF98FD41ABAAA712D6A2ACC360EF9EB51C2593BE7AD3064EF66865F44A3E7432FBDE8F9D32C6D1DE4F9D632C6D3EF793E74C9B4F9DE4F9D32CED2D34CDE750DF20692D378379BAA8A1B708CA62323F69217F85039799C01C7856B5FB99F323DBF7E28C5337AAEEE3873F574F6FC9EC2D01A4ED3A2F495BF4D591A5221C26F742D7C56EACF15B8B3D54A512A27CCF0E18154BAD11111886C01346566E10225C6DF26DF3A3A244494D2D97DA58CA5C42814A927D08245078D753D9A668BD513B494E716E18242A1BCBE72222B3D939EA40050AFC483E756E9ABE36E7970F53953477554D1CB97DF821EE7786ADF6F7E6BE7ECD9415119E27C80F52703E75B9119666710D63635AB24C3D4132E725C2A7614D62F631CD49439D9486C790532FAF3E8D8F2AD7D653B334CF5DDFAC7EAC6'
    $JpgBin &= '9EE6CDE889FC5BBDBC63E197BB52AEC9ECA4856E2B811C8E0D6B3AAFAE00971491C8138F85062E8C5F75D6DA8600186E5B112E43D5C2171D78F8263B27FB541BAD028295A928415A880948C927A0A0E4FA21B72E168B7BC7C2E5CB7A7AF3EE190B548503FC3DA11F04D04828A778EE67773C33CF141AA6D96F2AB16CBAED31B5943CF80C3441E39381FA29483F2AC55388CADB14779722979BB66379EC83B687578049758CF9FBC9FF001FCEA889776F519DEDEBBD7AD4B2A30AA34DEEF718370436C3AF4192892C25F6FB46FB44F2DE4F51FA8E04104021BB3992ADAD8AA889C6774FCFE70F4FECF3595B759DA4CA87F612D8C265C352B2B6147971F7907077558E383C88205B13971EBA2689C4B6BACA05073DDAD6CF1AD6111370B7B8D43D4311B298B2549F03C8E7D83D8E2504E7079A09C8CF882A9B96F6B7C6E98FBF737B43AE9D34CD15C6D515718FD63A551CA7D939899879D5C7E4C797220CF8CEC29D15CECA4C677016D2FC8F4208C104702082320D428AF3BA774C3A97AC451115D13B5455C27AFAFA4C738E5E31313393608179D537E6F4F69C6D2B98B485C890E0CB509A3C3B473CCFDD4F351F4048C4CD554ECD3ED9E9FBFDFAE514DBD35B8D45F8CC4FA34FE69FD298E73CF846FCCD3E9BD01A3ED5A274FA2D56B4A9654AED24C9778BB29D3ED38B57527CB9018030056CDBA2288C4381AAD4DCD4DC9BB767'
    $JpgBin &= '333F71111CA2384447086D1595450737DB16BAB5D86D4FD8D2C46B8DC26B25B5C579216D36DA860A9D1D4119C27DEF419351AA71B9B1A7B335CE78447DEE79DA2B8DC68CD4768ABB3690109DE564E00C71279D554C45318875EEDCAEF57372B9CCCF15DEF5EB59CABC398EA3BD3773D541C7179828CC624756940A5C23E214AC7CAA3B5BF2BEAB3B56A68EAF626CA2F0F5F367162B84A5132FBA88F2893925E65459709F52A6C9F9D6C3CEB6C755BC10AEA5201F970FE405044CC5989AC74C5C53C37E4BD6E74F936F32A73FFA91D91F3A0E8140A05028140A05028141A56D4179734E47CF072E6B5AC79844490A1F92F72831DDC33A7981EF487D4B27D123771F993411E324E073341E3CFA5D5C4CDDB6DCA36F6516F61A8A8F418DF1FF003D7474B18B7972F57566E63A39BE99BB3967B9A5F049657E07923AA7CFE239FF00FED5F54661AF4CE25D39A98975A4B8DAC290A190A0781079552B3697048F535199626A56247AD6328CD6A848F5A8E51DB54241F334CB1B67783E758CB1B676EAF3A64DB599B7266143765C852834D27270324F9003A927000F3350B97362324D733BA37CCF07A7BE8D7B3791A4AC2F6A3D42C246A8BD212B9083C4C28E38B71479639AFCD5E7BA0D6AC4638F17634F662CD188E3CFD6EC013595EAC2683E9C00492001CC9A0F217D2275CD97586B0882CEC34E47B421C61BB8249DE925646F01'
    $JpgBin &= '8E6D8291BB9E672470209D8B16B33B72E7DFBB15CE2393CF9AF2F866BE2DCC2F2C32ACB841F697E5F01FCFE15BD4538DED5AEACEE5BD98AB3AD21C53ECCE43D0543FDF34B687EAB07E55ADDA1FC899E9313F18CFC32AAAAB6366AE931EECC67E197BE76757055D367DA72E0B254B7ED5194E13D57D92428FF781AD277DB0BA72A07CD29FE42830209ECB6916770704BF6C9CCABD48722A91F900E7E66837CA0506BDB4A90E44D9E6A392CAB75E6ED724B67F1F64ADDFD7141076865B86C5C14D001B8AC165AC7BB93BA9C7CA823C1A0E45F4B39A59D1B63B7A4E3BCC92EA87984EF83FF83F2A85CE0DFECEA73773D21E6F8CF3B1A436FB2B2871B50524F911543B5319749B4DDD13E122423C248C293F754398A9E5AD5518964F7A3E759630CFD3DA92E7A7EF2C5E2D127B096CE4024652B49C6F21633E241C0C8F4041040211330AAED9A6E4625EA9D99EB9B5EB8B3F7A884479AC00999094ACAD951E441F7907070AC71E20E08205B139722E5BAADD5B35370ACA050736DAF6CD236B58CDCFB73EDDB6FF001D3B8D4C2DEF21C6F3C5B75231BC064949E693CB8150355CB5B7BE2713D5BDA1ED1AB4B9A6AA62AA278D339C66384EEDF131D638C66384B60D9D68DB4689B022D36B42DC5295DA4A94E805D92E91C56B3FC8720300559451144621AFA9D4DCD55C9BB727333EE88E5111CA2394726D3595250730DB26D3E36918'
    $JpgBin &= 'EAB4DAD4DC8BE388CE0F8911524705AFCD5D427E6786331AAAC3674FA79BB399E0F354AB9489529D952A438FC879656EBAE2B2A5A8F324D56EAC53111885BEF7EB467083D5D7B31A1188C2F0FBE3048F711D4FC4F2FCEA3329DBA3339688470C545B0F5BFD17E7AA4E85B8475AB796CDC7B6F807D865CFF9FB4AD98DF0F357E9D9B95478BADE72CA7D147F503FA5655217582B72CECC91C0C6B8C07F3E4944B64ABFE10A1F3A0E8F40A05028140A05028141CCB6E176365559EE2A6FB54C70F38A4E7982A65B38F5C38AC505E766C79D61B3C988E0763BB18BA850EA14A3FD2831D2F2185A1D708090B4F3F52001F9D07883E90EB53DB6BD4EA573EF491F93481FE15D3B1BADC391AA9FF992D150DD59353526A6C7A66EAA883BA3EAFB03C50A3EE1FE954D52C45CC36B0F655C0E73CB155CD4CCD69BD39A5B586AA8F723A42CA2E4EDB5A539216EAB71A0A037BB049F7DE50E491CB232464634EBBD55CDD44E23AA562C5CD56FA6714F5EBEAF042C29CDCC8C890D6FA50A25250B18536B1C14850E8A0781AB6DDDDA8DFC54D75554553457BA617C3BEB53CA3B6FA1EF5AC6D31B6CBB7BA0092E6E85AD11DC5A0286464272387C6B1356213A2A8CEF74DFA2CE921AEAFAE6ADBDC468DA6C7292AB6A43784C9969CE5DF54364787F1F1F748AD7CED4ED4BADA4D3E3FE6D51BF97ABF77AD826B2E83E8141F7141E65FA4AED7049'
    $JpgBin &= '5C9D11A6657D82496AE929B57ED0F22C24FDDE8B3D7D9E5BD99DAA36E733C3E6E6EAB55133B14FB5E63BEDD94D8EE71978797E152C7B80FF008D6FD2D19B9C91B6EEE51AFBF56478BDA2D3DA25D7DDE2729493E11D388E752DBCAE888851B384156D0B4FA42B708B9C739C79389354768FF74BBFE19F94B5355FDDEBF54FC9ED7D83DE512F44DA6D91D9DC8F1A1BC12A59CAD5BB214919E8381E55A73C5E9A78BA1C879B658ED9E710DB686CA96B5A804A40272493C85618695A5757C5D4DB4AB7B36D4E624290A690F1C82EEFC7905471D1396938EBD7D00767A0506B3B4E1BDA1AE4D9E4E06DB3F0538949FD0D0699A1B51C7D43A3A74B6B0891DBB4DC86BEE2B89E1E8798FF002A0C90683857D2DA4A5F46952D9CB65A92411C8E0B633FCEABB9C1D3ECC8F3AA7118C62C782ECE94D2DFDC5A5086927009209E27CB855510E9D754C7049B37779A876D981B4210E87038DB6309C059031EA056677234C6D426DA9A879A4BADAF79247034CB1B32B81F27AD6329D36A6527A6B50DD34E5EA3DE2CD2CC698C1F0AB194AD279A163DE41C0C8F40460804622E6259B9A3A6F53B32F5CECAF6816BD7965EF11B11AE2C00264252B2A689F7927DE41E8AF91C10456C53545519879FD469EBB15ECD70DD6A4A0A0D335C5D67C0BAB4CC492B690A602880073DE571FD28373A0E4DB6CDAB31A49B72C96471B7EFCE27C6AC05221A48'
    $JpgBin &= 'E0A50E456471093E84F0C05575DC8A777374345A0AF533B53E8BCBD2E6BF2A4BB264BEE3CFBAB2B71C71454A5A89C9249E2493D6B5F69DEFE1E298C446E592F63AD4A2A5555961DCAE8886C951F12CFB09F33FD2A5957DDCB5190F3921F5BCF28A96B3926A2B2230B7465E9BFA24B84D9EFC927A42501FD97D3FC922B628F45E7B59FCFABEF93B9A4FD92BF887F23526B39D6D235A414995A660A91224AA34854958394B250CAD6123CD5948CF97C790775A05028140A05028140A0E3DF4A34A93A4A2BE07571ACFF75CFE4D1A0E58EEBBB969BD33A3253094C884FDB1D6DD8EB380A53729D49293EEAB18E3F0C83C2831750ED5CDD97022C384A84C26534F4852DC0A52C21614123006064039EB81CBA871FF00A4AC23136E7A9DA23817DB58F5CB2D9ADFB357990E26B2717661CFD0DFA54A6A68CD4CA8ECA9C712DA1254A51C04819249AAAAAE22332AEAAF0EDDB06D91DEF5C144A90F3D074F34BDD7A72478DE23829A8C4F03C4614EF14A4E427241AD1AEB9BBFE1F9B7B49A2AAF79F73753D3AFECF64E9AB0DA74E5963596C7019816F8A8DD65868600EA493CC92724A8E4924924935277A2222310F36FD29F65CAB1CF97B4CD37114AB7C85056A286CA73B87A4D427D3F7807F17DE223544C4ED53C5A3AFD277D4ED51E947C7C1C6243906DAD215316A7DD75016869A3C374F1049F5E156457154661C1A633C58A8BDC'
    $JpgBin &= '152B0E5B54139E6974E69B496CD2DAF43E9A91ACAE62D5675BED352E0C8766BC471891523754BCF2DE51F0247992790C8AEA9DA9C726DE8B4BDEDCDA9F463EF0F4FE809103485905A6D96F088ED36DB51DA41C25094823E24F1F89E7527A06C9135A24BA1136116D279A907247C8D06CF226368B5BB399297509654EA707828019A0F3EEDC76D6EB3649FA774E2BBB5C7286E64A6DCC98E858394A4F459039FBA0F0E3822311B738E5F7B9CCD76AF6236289DFCDE5D54D6136E9CF868BA6384630ADD1E2563856DC4E383936EA8AB723E2B36F7AD0F5D7B9AC164ABC05E27788DDE39FED54E2B5914C6504D5CBB1BFAEEBDDF7B796B5767BDF78118CFCEA512D8894BE8AB9C26759D9DF6AD385A26B4B07BC1E18583E554768573FC25C8EB4CC7BE30A7574C7715C75898F7EE762D0BB4A95A05C8C84DBDBB830F5B5054CA9E2D9429C5177782B07A286463CAA897A394C6A8DA2DE75D5A9B6CB69831FB44A7BAB2E12957151CA8F356303D3AE2824F6137F8B1355EEC064CA75A5F685E5AB08CA5A750700731F6A38FAD07A0E06B55768113A1A4249E2B689E1F23CFF003A0DC5975B79943CD2C2DB580A4A87220D0738DAAEAF611A4EEADC28C242596BB52E2C9093B842B801C48F0F3C8A0E1DA1350CC87B3AD4D708CE316F76DF788BDB1009416F0EA48524939C92063E18E34162E7B7B71C82B66D5A7D0DCA29C079D74A'
    $JpgBin &= '923F1048C63E193F1341AEED16EAD6A2D1BA19326DE52AECE4301C65C3E02140710AFF00764F3E955DCE4E8F67D589ABD8E63AA5E622A3EAB8EC8DC3D9BA5DDE3951C1E9F3A843A154CCCEF62C5BC2116E8F0DD80DBC180ADD5159078A89E9F1AC4A54679362518D6BDE9CF052232C23723A4F1714A4051C67901E750996E534F9B1D5537A9A2B9C5AB5B491E4A74922A33309453542566AD03BBB8DA0361D610E1483C0152726AAAAAC3A162D4D54E65B26CBC6A04EA98D70D3CFAE3CB8EA1F6A3D8083ED073A141038A7AE06388C8959AAA9AFCD6AF6BDBD3DBD366FF19F47AE7E91CE7D9C5EA456AEBABC77A3436B7473C214AF8FC2BA0F1095D3DAA5B9F2131263418795C10A07C2A3E5E86821F691FF00A698FF00DD87FCCAA09CD7CF5DA3E90B83B6394C46B825AFB271E4E46723213D3788C8493900E3208CD62738DC9D99A22B8EF2331CF0F14479F2A6DDA6393E0762965E577B5482A2EEFE4E52ACF12B279FE75A154E277BDCD8A62E514F73E8F2C30A5C8438FA96DA03682782474155EDB6E74F311BD1F3272590427C4BF2E83E352DB553A6CA0A4A9C79C2E38A2A51A9C54A6BB1863A938A9C4B52BB5853525131875ED9A6A599A374CB777889438A7A732DA9A59212EA10C2D4A49C72FDBA4E7A1C55F47A2E06BBF9F57B3E50D9B54ED96F577B3BCCDB98459D0A7108529A74ADD50215901781BBD390CFAD4D'
    $JpgBin &= 'A8D474238A9BA9998C0E4BCD3CD7CDC69481FAA8507BA28140A05028140A0502839BFD226DEB9DB3A754DA7794C3AADD4F9A9D65D611FF0013C9A0F285CE619FB17B24B0ACFD537A950943C92FB6DBC8FD50EFEB41A599B9046F506DBF49A6BBFEA5D3DAB1B00B77EB14692A50E45E03C63E5940AD9B3579B8717B4A366B89EAE54DB7529A9C89A9B1E84936383AA20BFA9A1489B65ED409AC477371C5B7D403CF1E601054011919CD6B5DA62B8DE95AB9445C8AAE46621FA29A525596E1A7604AD3AE4572D0B6122198C9096836060252918DDC631BB818C630315089CBD65BB94DCA62AA67309709ACA6A1E65A7D95B2F210E34E24A5685A414A92460820F30683C29B66D0E9D9DED45C7DF656BD2F3E5ACC25286F088E281296147EE722827A023A126BABCD9DA8723B434B339BB47B7EA844C87A428351550EE4EBCB4B4CC44A405BEE28E10DA41EA4F0F4E3589AA78438B66DDEBB5C514F37B0365BA05BD07B35931E4371FEB999114F5CDC64787B4DC386907FEED19207CCF0DE356446230F5B6AD536A88A29E498D9B36DACCE52D095293D98048C91ED7F4ACAC4A6BA871DCB0BB20B690EB25250A03078A8023E1C68390ED2F69C9D2DB3D9B64B7381DBD3CCBE94107222B7B99DE3F88951C0F99E1806AAA6667669F6FDF573B5DAD8B3E653E94FC1E4484F3F22D37171E714B52DF694A2A392A277C924F535753888'
    $JpgBin &= 'C43CFDEAFCD7C6DBFF00CDEBBFF0B5FF00D41532C55C54D9E43F12C6D763BBF6929C4A82921408DD479D4E257575CC630B305B47FA76F028494879FF00091C38257D2A712D88A9B26CBA4CC9BAC1A2E259536C34EBAA01848E252509E9F7969AD3ED2AF16E8A238D55531EE9DA9F8532D7B95D55D76AD7E6AA9F84ED4FC29966C89C18D637A420A15DC63775412011F63D9B5919FE0FD6A4F56BAEDF5E931A727B54766DC00A1BA809C2F71293C8799550760FA15A6DCCBB70BACD79869E6D0E250A71401DC70B6011F365C141DFF5B4AB54EB56F332A33B21B5828DD502AC751F0EBF2A0B966756DECF9D585714B4E849F2C93FD682174F5A5374D357E61091DE244472334B238A0ADB50E1F98A0F323D2A5DCE36D2AD7DAB84CA862E8D344924B6DBA990303D1B513F0141CF2C37D88C5AC45331501E0B2A5381B2A0EF9711C46283A94E92ABDFD1CCCB8CFC59F32C7745254E200538DB0E0E7E63C4E9FEED577383A3D9B89BB34CF38F9627E5971FB94891234E283CBDF0890DA13C00C0DD5F0FD2AACBAF55BDECD8926445D396C0C2C237C3BBDE1073F687CEAAAEA6F69AC455C56F54B8EC8B75ADC795BCB521C24F2F7B1FC80A86D6E5F5598A6BC42424BAA88B65A61A61294B0DE3EC924FB23AE2AAAEB98974F4DA4A6BA33309ED2961BCEAEBB458115C86879E467B479610865A49DD2B563924790E24E00AC5145776'
    $JpgBin &= '710C6B355A6ECDB7B5737CF28EB3FA4759F76F7A75AD1969D0DA5ED968B5294F974ADD9529606FC97309F19C721838091C00E1E64F52DDBA6DD3B34BE75ACD65DD65E9BD7677CFBA23A4748874CD3AD36CD92125B42500B0851C0E64A4126A6D552E596DCE5C04F5C605E18C60E0641E0AC79D06A7B48FFD34C7FEEC3FE65507CB94C7B53DF1A811DC0D454A8EE67AE01CAB1E78E43FCE835EDB5EC8E3EA6B226669C4223DEA1A3C2D9504A26A47BAB3C82FEEACFC0F0C14D17ECF791BB8BADD91DAB5682E79D19A278C7EB1E3F3E1D263C8F714CB8F25E892197633ECAD4DBAD389295A140E0A540F1041E18AE54CCD33897D32D536AFDB8BB6E734CF09FBFB847A91598A90AECAD2D156454D3B9656968AB62A68DCB2B0B47E756C54D0B96666710DD7543DF57695D3B6C27C4B4C89C7E0B52584FF00FB527FB55B747A30F23ABAA2ABF5CC70CCE3D5C900A9E8FABDA405F8FB55950F4C2377FF001549AEE81F4778E6EBB4588D019C3AC14FC5321A748F9B6D3BF9507B928140A05028140A050282175C4176E3A4AE5163B61C93D81763A4F5791E36FF00E34A683C25686DB4B7B41D08D9DEFF0057372B695735986B2E023F8A2ADE3F9507363348EB41D616A1ACBE8DAC3C8FB4B868CB929B70735774907782BFBE48F40D9A9D1389737B4EDED59DA8E4E5ADA2A732F33554C843783C6AA9A954D4EAFB06DAA5C767774E'
    $JpgBin &= 'ED23B595A7E52C195141C968F2ED5BCF2570191C943873008A6A9989DAA5B9A3D7D5A6ABAD33C63E9E3F7EAF6CD8AEB6FBDDAA3DD6D729A970E4A02D975B390A1FE07A107883C0D4E8AE2B8CC3D6DBBB45DA22BA2731292A92C6BBAEF4769FD6B609564D450112E2496FB35F1C2C75041E841C107A100D0707D9EFD1FDCD237BBA6A5BDCB4CA5DA9C53365CA810E3440CC850F75C292118E852AE7906A34D114F06B58D2DBB1354D3CDDAEC12DE97A32E297D6565969D425479EEEE640A936546CCBD9B87C5BFF00C541ADFD22B5F43D1DA1A632CA9B7AF1210931A31E3BA3B448ED143EE83CBCCF0E87145CBB89D9A78FCBC7E9D7DEE7EBB5B4E9E3663D29FBCFDF178F6DF2A55C2C5729B35F5BF264192A71C59C9528B69A518A6310F3355C9AAACCCEF4158D853B67B821B4EF292E34B2073C78867F5A9E51BB39A573B3234E5DB2923835D3FF00682A71533A7AB8B121207D49149E425AFF00922AC895B72AE0A5BDD8FAE9D53CA080A7DD193C0788280FE62A712DA89746D8BDA2459E4BB7C9B11612D3BDA805390B0CF8928F5ED1E532D8F5AE6DEABBED7534F2B74E7FCD56E8F7444FFAA11ECEB737B5FB53C2DD3FF755BA3DD4C4FF00AA1A4DE1D4B3AE2ED680EA54EC78E2DFBD9FDA3ED0425C39FC4B42CFCEB71EA98510CA621DC92FB0EB64C45E37924038209E3F0141EB1FA2669282EE8371E9C1C4C83D9A53BA'
    $JpgBin &= 'ADD3B982B20FC1C71D4FCA83B1BFA5AC2C6E76EF3A8DF56EA77DE0327C870A0CABA4162DFA4A5C48FBDD9A5A511BC72789CD0476CD3FD8A67FBC4FF2A0F306B38AEE8BFA46439AE3645B0BDDDE6F1C2531D44B25233CC88CB6558F32283906A7B6AED1A8AE166BAD80F7A8729C8CE391F7901450A292A007020E3341B66C61E6D8D5175D1A87D6137A8016CA1CC6F25D464842BFB2A5ABFB22A35C669985FA6BB16AED35CF089DFEAE7F06B7A8612A341B9462D942A34E0168238A31BE9C7E7C2B4A2ACBD8576669C44ABB7475CFB0434C51DAAE315A5D40F686544838F2E355D7332DFD24534EE96476BBACB7125C061C2C6529ED127233C4D5335CC3A74E8E9AE769B0697D23A875ADFA342B4C36FB57D2095A8E1A61B1C0B8B3D123F32780E358A2DD77AAC41ACD7E9BB2ECED5CDF3CA39CCFE91D67F57A4D9D1969D0D6C8366B6ABB67431BD2A52C00E3EE64F88E390E784F203E64F5EDDBA6DD3B34BE63ADD6DED6DE9BD7A77CFBA23A478436CD7685A6DD68CA48DD6D4957A1C2387E86A6D46D5A7DC6DDB242521614030849C1E440008FCC50721DB46D958B1CE3A5F4BDC237D749527B790B4768DB073FB31D0ACF239E033E7CB4355AA9A3CDB7C5EC3C9FF2729D4E2FEB227627847099F1F08E9D7D5C698BADE2EB0EEC5D4B71AECCC44F7B8A956403BCA0548F3493F31C8F426FD3EA22F53E2E4F6CF62DCECCBBBB'
    $JpgBin &= '7D13C27F49F1F9F26E9A874FAED11D8B85B5C709631DAABA83F7FE1E95B0E2B65D35776EEF042F82643780EA0743E63D0D0730DBFEC899D6319CD4360690CEA2651E34704A67200E0951E41C03825479F04AB860A75B51A78BB198E2EEF61F6DD7D9B7366ADF6E78C74F18F1F9FBA63C91263BAC3EE30FB4E34F34B2871B71252A4281C14A81E20820820F115C79CD3389E2FA9D1DDDFB7176D4E699DF130C75A2A71535EE59595A2ADA6A685DB4BD6782F4FBB46891DA53AEBAE252840E6A39E03E6703E75751E74C53D5CBD54FF0F6ABBDF9633EDE11FF0074C27B6D33A2C78D698915C4389714F38D2D3C9715ADC88CAFE0B5C690EFFF001B3D6BA6F9D39AF7DF5A0F4D7D08ACCA9773937B7124B6DAD6B49C7B2A423B341F8283EF8F8B741EB7A05028140A05028140A050783FE9270E4ECC76E36CD570E305C70F83D91E097908C7D99F242985A59F5ECDCF2A0E31AFE0B5A7B56CDB645794F40CA645B9F3FBE88EA438C2FE25B5A09F2391D28370FA376B18365D7E6C77E58FA83534755A6E014AC253DA706D64F4C288055D12B51A23553155334CF097DD65A6A6693D5971D3D7049EDA1BC5BDE231BE8E6858F42920FCE9353C56A6DCD9B9344F24725BF3E6381AAE65A7554C869BCA0F0AAE6A5532EA1B0BDA9DC767D75EEB28BB2B4FC95E64C6CE4B4A3FBD6FC95E639287AE08A266AA276E9F6C75FDFF00DA794C'
    $JpgBin &= '6EE87B42E692E6637D33C63F58F1F9F09E531ECFB35D2DF79B63173B6CA6E5449080B69D6CE4281FF1F4E62B72DDCA6E53B54F07B6B37A8BD445CB739896B332D1A9989AFC98D2B7BB45957D9B98E7E86A6B565567D51720199AFA92D678F68E70FC873A0D923D9D30F4EC8B6C53BCE3AD2C152B86F2D49C67D3A50687A975231B2CD333AE575EC5D99202530A2A1CCA9E58CF3F248C8C9FF2AD6D45FD88C53BEA9E1F5F5439FDA1DA1468EDE677D53C23EF94737923515E2E7ABA6DDEE176989727CDDC3BCE2B09002C1091E4001802A8B51B3C67333C67ABC653A8AAE5CAABB9399960C14AAD16C650A75875C1254B2942B7814948183F91ABA659B97623130C23695A24197649E86F20FD9AD7B8B4FE1C9E0454A257D17E9951260DEE5B0A6A65C63B6C9E2A4A9E183F24E73538A9645CA639B1E5331E2DB9A84C49EF0A4BAA714B08DD1C40181F954E2A5772EC55C152EDADEA2951DA65D0CDCDCDD6B0B04A1D3C81C8E47CFA70AC5EBF458B755DB938888CCAD9D5DBB36E6BB93888E2EA2CBAD6CF748C99B2A6C7908B6371E6B484AC90E3C953821344103DB90152149FB91B3C88AD7D15BAE9B7B773D2AA733E19E11EC8C47B1E93B2F4D558D3C4DC8C55579D3E133CBD9188F63CF939F857890B9C99E98B31E515BE87F3BAA5939528286799E383D6B6DD26D3B398AE5CF51596C8243571ED262DC92DB2B2ADE8E11B'
    $JpgBin &= 'CE27881C4A52A481D54523AD07BCED7A127D92DF19AB54B405B6DEF2F0B285768AE2BC11CC15127A73A0CB634ADDA63E872E933091C0EF385C5E3C86787EBF2A0DA67400E591DB745DD482CF66DEFA8E070E193C4D061691B44AB43321B92B657DA2814F66A2790EB9028380FD39749F7FD30CDED97931C30B0F3AA2D92158C214091D4A54D9E47C2C93D283CCBAC8DE275A6CDAA58BFB2A6A6B5DCA62D13C84A65C74A52ACE71C54D165CF52A5795042694BDA3476A483A99A98D5C2E502426432D36496CA81CF8D5D41E2081E741DBB6C312DAABDC6D63684191A6B57C54CD6B1CD2B382E24F92C2B891D1448E95CDBD1DDDC9E93BFEBF7E2F7DD935C6BB474CFE2A314CFF00E33ED88C7AE999E6E782C8CF681712E8CEE6723B50A4287A7006AA9AE1D3A34773A24EE2A6DEB9BCEB67790A5641F3AD6AEADEEFE9AC4C511130F406C197A72EF658B64B5B91A0DF5B63FD6D12164B92CA493BE82071001F63DDE3CF8A8F534772DD546CD3C5F36F29F41ADB3AA9BD7FCEA6A9DD3CBD5E18F8F1EAEC369D1A5A94976E121B750839ECD00E15F127A56E3CC365BBDBA3DCE12A2C80704E52A1CD2AF3141E6ADB0EB0916A764E9CD277E8E1FC96E5CC69E29ECBA14271EF742472E438F2E6EAB5B14F9944EF7BBF27BC95BB7A29D56A68F378C475F19F0E91CFD5C78C408512D6E896B7C4B960E50123C093F7893CCD72AAB911'
    $JpgBin &= 'C1F47B3A2AAA9F3B74333B6928B840BB5BEEC985322B780A20939C9273D0839C1079D66DDDD8C4C4EF55AEECD8D54556EBA734CBD7BB29DA359F5E4075805B66E8C27FD6629E4B4F2ED119E6839191CD24E0F304F734DAAA6FC78BE47DBFE4EDFEC8AE2A9DF6EAE13FA4F8FCF973889787A6A540BC1996F96DA19DEFD92C13949E6935B4F3CDA683C89F4A0B8E8DBA6B06D5A7DBED2ECD65BBA4B648EC1D206129FC4E27182B1D3093BD81B9C7D75EB75558A78C737D47C8FECDD7D8B3372F4E2DD5BE299E39FCDE1FAF4E12E3AB4569D353D5DCB2B2E22ADA6A73AEDA6D9A02DD21B6DCB932F222CC7D7DCEDEFB9C12C3AA4A94B924F44B0D21D7C9E9D9247BC2BA1A3A339AFD9F5FBF5BC3F955A98A229D253C7D2ABFF18F74CCFAA69721DA1EA88B7ED592A65B5B5B16A6528896C657CDB88CA036C83F8B7120ABF1151EB5BEF18D7D3314A2129CA9478000649341FA3FF463D2474AECD62B4FA0264B890DACFF0001515F1EA3B65BEA49FBAA4D0756A05028140A05028140A05070FF00A5EECF0EB5D9DBEEC364AE7C7DD2CE0712E2492D7E654B6FC876E547D9A0F0D28AB566CB8632ABDE90052A4E3C4FDADC7339F52C3CB39FC2F8E8DD068297958DD51C8A0F51DB2E49DB1ECA18BC2561ED6FA5184C7BA359FB49F086772401CD4A4F1DEF5DE27DA40AA6F4EC79DCB9FD7EBFB387DB3A49AE8EFA9E31C7D5D7D9F2F5'
    $JpgBin &= '347658C8E3D7AD55554F2D864B2CF318E955CD4CECAA0C7A5426A4661D37627B4CB8682B908724B92AC32559911F392D13FBC6FC8F98EBF1C1AA7BCAAD55DE51BFAC75FDFE7C2794C6D68F5F7345736A9DF4CF18EBE31E3F3E13CA63D8165B942BBDB58B8DBA4B52623E80B69D41C850FF00AE9D2BAB6EE517688AE89CC4BDAE9F516EFDB8B96E7313F7EFEB1C921535ED6F5E6AAB568DD3CFDE6EAE8DC4021B681F1BABE894FF00D70AD6D46A69B14E677CCF08EB3F7C7A3475FAEB7A3B5DE57EC8EB3F7EE789B685AB2EDAD351BF78BABBE25F859641F032DF4424797F33935CDA2673355739AA78FD23C23F7E2F03A8D557A8B9372E4E667E1E11E11FBF16B2A455F15288A94293538A928950535644A512B6A19E752894E2565C455912B29A9BB68AB740B0D9266B1D4256C428EC15829202CA0F009467F78E9F023C81528F841239957FF7F53DD47F2EDCE6AF1AA37C53FE5E33E388EADCECCD37F696AB7FF2AD4E67FAAB8DF14FAA9E33E388EAE51B5ED7AE6A99ADC184E27B830F2A43CB6D25089525494A0AD293C43486D2865A49E21B6C120296B15DA7BC73EED57E741EBCFA046CF572E6BBACEE0C9ECCE3BBEF0E6DA17C0FF69E4641E63BB11C9541ED9A05028141ADED1B4F31AA3484EB43EC264171B56E36A38ED3C252A467A05A54A413D02CD07E72DA6C8BB66A8D47B20BCBD845D1C42AD321D1B8133900AA'
    $JpgBin &= '1BA73EC8750E29A567976C09F628397BC244590E30FA16D3ADA8A1C6D692952540E0820F22283BFF00D1BF52C3D51A666EC76FF2DB64C8715334DCA79580C4BC12A609E89738903CCAC712A1546A2D77B46238F275BB17B4BFB3F55172ADF44EEAA3C3C3C627131E318E132B52ADF2A04E7E0CD616C498EE16DD6963050B07041AE25553EBD6AD533115533989DF131C26277C4C2B699C2870E1545553A56EDB361AE44298D4B88F3B1E432B0E34EB6A295A14388208E208A845CAA9AB6A99DEBEEE92CEA2D4DABD4ED533C625EA2D89ED758D50DB361D48E371AFA06EB4F6025B9B8F21C92E79A791E69EA94F7F49AC8BF189DD53E37E51F93177B2ABEF6DF9D6A784F38F09FD279FADADEDE76C051DE34B69095E2E2DCDB834AE5D0B6D11D7A150E5C871E23535BADE36EDCFAE5E8FC94F2473B3ACD753E34D33F3ABF48F7F479E0009193F215C97D39F09C9A32F99A0CDB2DD27D9AE91EE76B96E4599197BED3AD9E293FE208E041E04120D4A8AEAA2A8AA99DED7D5696D6AED5566F53B54CF18FBFB87AE763FB50B66B7B496E62DA85798A8DE951CAB09524737119F77CC734F5E1827D0E97594DFA77EE97C4BCA2F26AF764DDDAA3355AAB84FE93E3F3F7C472FDB86DA17720F69BD1B214DC1E2895716CE1523CD0D1E88F3573574C0E2AD1D66BF6BCCB7EF7ADF25FC8E8B78D5EBE9DFC6299E5E3578F872E7BF747092'
    $JpgBin &= '918C62B9597D1E69895A7115653534EEDA5EB2DA64DE2E8CDBE2A32E3AAE249002475249E0001D4F01D6B62D5355CAA28A78FDEF713B4F536B41A7AB537B8472EB3CA98F5F3E91133C903B53DA45A8DA5ED3BA4A4179A536B81DE92149098DBC0BC539C12B90B42327A32D328C92A700F41451145314C7087C4F537EE6A6F557AECE6AAA733F7F28E4E2DDAAFCEA4A1D6FE8B5A265EB3DA7C25252447B7388794BDDC80F1C96BD3C3BAA7707810CA875141FA636F8B1E0408F062B61B8F1DA4B4D207BA948C01F90A0C9A05028140A05028140A050589B198970DE8921B4B8C3C82DB883C94923047E541F9F5F490D1B74D926D713ACADB1D2F5BE73CA1210E27EC9E2E2541D6DC03DC7DBED320638F6A060241A0E31AE2C916D9706A759D4EBF61B93664DB5E5F1586F38534E63F78DAB28572C90143C2A49217B66BAB6F5A1356C1D49627B725C657890ACEE3CD9F69B58EA950E1F9118201A84CAD8A773D1B7FB3D9755E9F4ED0F4237FF0092642B172B70C172D720FB49207B84F23CB88E98C73EB8EE6713E8CF0F0F09FD27D9C719F1BDA7D9B3A3AF6E88F327E13D3D5D27D9D33010ED8B5292424D665CDD999668B2AF96E557531344ACBF6C5249514D5354A9AA1BC6C7B68B70D0774EE924B92ACB21797E3F32D1FBE8F23E63AFEB5AF4DEAF4F5F796F7E78C75F18F1F9F09E5312D1EBEE686EEDD1BE99F4A9EBE31F'
    $JpgBin &= 'D5F3E13CA63D3B335558A2E9456A676E2DAAD9D97689752ACEF79240FBD9E18FCEBAD56BAC458EFF0039A7E333D31D73BB1EF7B2AFB574B4697F8ADACD1F199E98EB9DD8E5CDE42DAB6B7B96BBD40A9F272CC26894C38D9C8691E7EAA3D4FF002AE3F7955CAE6EDCE33F08E91FACF39F0C447CFB59AFBBADBD376E7B2394474FACF39F0C44696A6874AB62E3562B5A537564569C54B4B455B4D49C54B2A4D5B4D4B2256D483E556C4AC896D1A234A9BAAD572B929B8F6B8E953AE38F2F710529E2A52947D96D3EF2BE438D73F51A9B97AE7F09A59F3FF155CA88EBFE29FC31ED9DC959B57B5B7FF85D36E9FC5572A23FF69FC31ED9DCE6BB6DDA0A356DC5BB4590B88D3D0164B1BC9DC54B771BA5F5A7A70F0A13EE27F12964F5F4DA5B7A5B516ADC6223EF33E33C65F44D0E8ECE8AC5362CC629A7EF33E33C667AB98D5ED96D5B32D1F375C6B287608497375C5054871B4EF169A0405280EAA2484A41C654A48EB41FA91B36D2F0F48692876688CB6C869B4EFA50721242424241EA1294A5393C4EEE4F1268366A05028140A0F1FF00D3A3652E4B889D73668C4BF142D6F840E25BC95B83E293BCE8F453D93E148A0F30EB450D5B664EB98E02EE49288FA85B03897CF044BC7DD780F11E8E85138ED102835082EBD1E537218716D3CDAC2D0B428A54950390411C4107AD46653A697AA34B5EE3ED9B4E09690DA35FDAE3813E'
    $JpgBin &= '32404FD6EC24603ED8EAEA46029239F4E1BA073759A69AFF00E651C79C75FDFE6F75E4B76FD3A6C68F5538B73E8D53F866794FF4CCFF00A677F09947C5B72963D939F85723197D376FBBDD2CFF00AA56403BA788ACEC2BFE2A165EB738D94900829E208E879E6B1344C274EA29AA3128C92C767C48E0390A8630DBA2E6D30D6924E4FE545B12A303CBFA5197C38F89A32F9415216B49250B52494949C1C6411823E041228C4D313C4CD19307CA82B8F1DE9521B8D1DA53AF3AADD421232547C8566989AA629A63332A75176D58B555EBD56CD14C6666797DF28E333BA37A176B7AAE3E96B4CAD0F6290DBD779492D5F66B472184F588DABCFA3847F075583E8F49A68B14EFE33C5F0CF28FB76BED7D46698C5BA7D18F9CCF8CF3E9188E599E195B4F3AC9831A44D98CC386C2DF92FB8969969B49529C5A8E129007324903141FA45F44ED9835A0B42477E4210BB84A495B8E278852958DF503D53E14A53D0A501431BE45076DA05028140A05028140A05028141A4ED7F41DB3681A426596E31C3A5C68A518212AE87014791C84A81E414919046410F036A9D9BEA2D08B95A6752C5932F4ACB78BB0EF2C475AD109F1E10F2929C96CF0DC75B3C481C37CB683589661A4C1D15AADEBB3B6D8DA76E532434405F748CA7D2410085052014A92A0410A07041041208A84AF898768D8FE93DAD686BCA6F36BD353D0DBA8ECE5C47921'
    $JpgBin &= '4DC96BAA168CE4F5C1C6474AC4D11544C4C66250B914574CD356F897778BA32DF7F68DC6C70245B24E37A559E520A1C60F528CE37919E47F9721A7366AB5C37D3F18FAC7C7D7C5E6EFF64CDAAB36B7D3F18FAC7C7D6BA3433A7816F77AAB8721D7F4CD3673BD4FF03331B9AA5FB4F163787678C7A72AD6B94E1CBD4599A5A4DCA006D44118AE7DCAB0E45DDCC17E64F36B4DA8CA78C243A5D4B0547702F18CE396785696288AF6F9FDEFC75C6ECF1C6E73EB9889CFFB67AE38671BB3C708C5307CAAEEF1AFB6A54C1A9C5C662B595B38FF00AC55B4D6B22A63B8D81E55B14D6BA9A86623AFF14E528271BC46067C8799ABE9AB1199E0D8A77C667836BB6693B742B5B97ED5121AB6DA6360BAF49594E49E21240E249C706D20ACF1E1C2B528D45ED7CEC68F753CEBE5EAA639CF8F08F16CE8B497FB527674BBADF3B93F2A23F14F8F08F172BDB1ED227EA98C2C962812ED7A5DB50385B7B8E4D29F656EE38048E696C1294F32547C55DCD1E8ED692DF776A37719EB33CE6679CCBE81D9FD9F63B3ECC59B1188F8CCF3999E733F7B9C8EB65B8CAB7C4953E731060C7724CB90E25A65969254B716A3809007124938C507E867D123636CE82D36DDE2E6DB6EDDE580EB8E70237B040DD3F7120900FBC4A95C4146E87A0A8140A05028141837AB7C6BA5B5E8129214DBA39F0CA48E21433D41C1A0F06ED77629A97673AC66DFB495'
    $JpgBin &= 'A4DE2C2FEF3770B534852B0C39ED36503C4A6558CA549CA9B5279853616438D5CB49CE45C19558615C2E70266550948614B78631BCD38948E0EA0901431D52A1E15249AE5753C1BE685D99ED3E25C22DE2D7A6EF56F9719C0EB2F96FB0710A1D405107F4E3D4522259DA87A5EC56C91AAD28775058DCB0EA93C1E0E325B8B7257DE49E4874F519C13F138D4BDA48AA76A9E3F37A6ECAF296EE9EDC69EFCE688E13CE9F0F1A7C38C72E892FF429D4E5B5475B6E278142C711FD6A8FE1DDDFED98E39DD3CF9213526983114A6FB3F124615F1EA3E5CBE5555CB386FE8BB4BBDDF973CBDC0EC94722B4ABA70F51A6BFB50D624A7754462A975A89CC315592791344F7001F4A19303AE6865F787A7E7437991E7F90A1866D9AD53EF333BADBA3A9D5849538A2708692064AD6A3C129001249E82A76EDD776AD9A2333F7C5A9DA1DA1A6ECDB1DFEAABD9A79759F0A639CFC239CC20B5BEBD8FA720C9B2ECFDC72E1737125A9DA8196D5B8D0F79B8A7F42EFF73A2CF7F4BA3A74F19E3575FA3E2DE51794BA8ED9B9B38D9B54F0A7F5AA79D5F08E11CF3C1C820904107AE6B71E654D07ADFE85DB11767CB6B5CEA28AA4B3BB984D2C60A5B50F6FF89693E1F2412AE054DAA83DBC84250808424252918000C003CA82BA05028140A05028140A05028140A0D6B52D994EAD77084825D3C5F693CDCC0C6F27F18000FC4000792480D75B50'
    $JpgBin &= '71086DC5E463ECDCE381C4F03D719CFA839F5151499715B29737563041A90D9AD71924216B4714F1492391F4A30CF7E332F21495B693BC304E2A334C213444B9EEB6D28F3CD29F8884BA90388482555CFD4DBAA9899C6EF0DEE2768696BC6D4467D5BDC3F535BDC8EEA92EC75A083EF022BCEDDBF4553314CBC56A2E51333112D4E435859C240AD1AAEEF72AEDCDEC45B47269175A555CDEB2E326ACA6EB31714B36F952DCDC8F1DD7947A2104D5B3A9A2DFA75442DEFA9A78CE1B2D87677779E0BEEB210D238AD6A23B340F352B2123E647CEAFB37AF5FF00EEF6E6AF19F369F7CF1F644BA9A3D2EAF55FDDED4D5E33E6D3EF9E3EC894FA23696D327B4462F37148C00D9C328F42BC711E881823DEAE9D9EC6AAECC55ADAF6FF00A63751EDE757B77783D568BC94A6662BED0AFBC9FCB1BA88FD6AF6EEF069DAAAE122F53912E786D4A60111DB4A30DC707986D3EEE7032799C649278D77A9A62988888C43D7D34C53114D318886AD7024E7279D6596817FD20C5CE6A3EAD6D4D4B79610969968ABB5513800247BC4F973F2A0F527D15BE8F51F4E046A9D4CDA245C9C41080A00A5A491828474E238294398CA52774A8A83D500000000003800283ED028140A05028141177EB522E4C24A5494496B3D93846471E6950EA938191E808C10080D39497A338EB121B5A704075A51C949E3820F5EB8572233CB88114971A6B7540E'
    $JpgBin &= '42927D9579FF009D6604F5AE38746EA91BC9230411906B227551D95A521C6D0BDD1C09158988922BAA9DD12D4B5769A54B6D6A8C12B246704F8FE5E7545DB3B5C1D9ECFED28B53115CBCFDAF6DAB83256879A5A4E7DE494FE84035C6BF4ECCE25F4FEC9BDDFD11551BE3C37FC9CDAE384AF80038D69CBD459DF08E71473586C44428249EA686E2894466710CFB259EED7B9223DA2DB2E7BA4E30C345407C4F21F3ACDBA6AB938A233EAFBC35F59ABD3E869DBD5DC8B71FD53899F54719F6436E87A1A0DB007B565D50958E3F575B941D78FA2DCF61BF5E2543CABA567B2EAAB7DD9C7847D7E9EF782ED5FF0088362889A3B3A8DA9FCD54623D94F19FF363C695BD49726A5DB7EA7856F8F6FB3820986D7883A4710A75478BAAC8078F00464006BAF6ED516A9D9A2310F99EB75FA9D7DE9BFA9AE6AAA79CFCA39447846E6A33B8020700390F2AB1A8D275658A0DD52A53A80DC81ECBC81E2F9F98A0E87F46CFA3ABDA8EEF1EFDA8D0176A64A5D65875AC21E1CC2D693CD1D424FB7D7C1ED07BB6D70635BA13712237B8D2075E2544F1249EA49E24D0665028140A05028140A05028140A05033414950141057AB435254A91192843CA395209C25C3E7E8AF5EBC883818C6194435BED12DBA9502838E230A47A1F4FCC791E74865396B9206073AC89254B68273BD44503779642CA90B2950E441C5126B1759DDB829991A2CC4FFE'
    $JpgBin &= 'D9A04FE6307F5AD5D4692C6A2317A88ABD7112D5D4E874DAA8C5FB7157AE225AB4EB5E9690A2A7B4F361479969F29FD140D72EBF2774157A34CD3EAAAAFACC3897BC91ECBB9BE289A7D5555F2CCC7C114F583470249B4CD1E81F47FF00D2AAFF00E31A5FFA95FF00AA3E8D19F21FB3E673B75FFAA3FF005522DDA4A28DEFF47DC5797692464FC8207F3A9D3E4D68A3D2DAABD754FE985B6FC8BECBA7D28AAAF5D53FA616DEBE7764EE5B6D56E860723D976AAF9EF920FE55D0D376568B4DBED5A889EB8CCFBE77BB1A4EC4ECFD1EFB166989EB8CCFBE733F16BD7BB95C2E2419D31F9013ECA56B2529FE14F21F2AE83A8D72675A0869C95046F949DD564056381C73A08FB7592E97FB80836A88B90F1E2A23825B19C6F294782474E3CCF01C48141E8FD8D6C5ADBA6F72ED7B0997715279A924048238A520F14A4F239F128703BA0A9043B5A371290948094818007000505608A0FB40A05028140A0F848A0F85605046DDE0C6B8206FF81E40210E819233CC11D5278647C0F020101AE18EFC378B4E20615EE8394AFD527FC398E3CC713149256D9012A1824F966A4275329BDD05478E288A32EF292A4652787F2A0D4EF328BED299928665347816E436971247C140D42AA62A8C4C65759BD72C57B76AA9A67AC4E27E0D1AEDA4F444F51549D311D970F58925D607E40948FCAB52BD069EAFC38F5661E934FE5976D588C45FDA'
    $JpgBin &= '8FEA8A6AF8CC4CFC5AECBD9DE860A39897C67D133D2A1FAB755FF65D9EB3EFFD9D1A7FE21F6AD3C68B73FE5FA4C31C688D08C1C9B6DE2463A3971091FF000B748ECBB1CE667DBF446BFF00885DAF5479B1453EAA3EB32BCD40D2F6E39B7E91B5850E4B965C92A1FDF56EFE957D1A0D3D1C288F6EFF009B93A9F2BBB6B531B35EA2A88FE9C53FFE62145D6F5749318C55CB5371B18EEEC2434D63F810024FE55B5111118879EAAAAABAA6AAA7332D5E672ACA2879895292B2949213C5440E5F1A0847987E5484468CCB8FBEEA825B6DB495296A3C8003893E941D7B645B0E54C90CDE755A51D9A4EF2229C2D03F8BA2CFA7140EBBDC5003D2D6D8D1A0454C688D86DB4F4CE493D49278927CCD066050A0AB340A05028140A05028140A0507C2682852F141656F63AD063B9271D68315D98075A24C3952197B05C1E24FB2A1C08FFAF2E468319A95DDDD0B6DDDC23DE0387CC7F4CFC05048B7708521B1DF1BEC73C03CD9CA09F88E47E34CB0B72EC66537DA419A8524F2DEE20FCC7F4A196BB72D377A464A6287879B6E0FF1C1AC619896BD2ECD77413BF6C9891F7BB1563F3C561899473D6FB8367ECEDD314AFBC5857E831526188BB15F241CB767B8AF3D4465FF003C505D6367DAB2611BB6C2CA4FBCF3A94E3E59CFE9412B1363EF7665FBE5F63C565032BEC51BD81FC6AC01F91A0C192BD9D69E78C4D39627757DE520E14E'
    $JpgBin &= '65E693F895C37481E6949F88A08591A52F9ACAEA8B8EB0B8A1A6D0375A8510808651F752465291CBD9DF27A9078D074AD2568B2E9F8A862DB1196824E46EA791C633C7249E9BC49563867141B433341EB4196D4A07AD06421FCF5A0BE973341702B341F681414955050A73141656F63AD06339271D68315D98075A24C49131B71050E04A9279822A230CBEDA1590B51F239F10FEBF3E3EB41231EE8DBA9DD92DA5F40E6E37ED247A8E7F3FE752CA2B8BB7C4B8B6550678F549F163E5C08A3283B9699BC0C9690D3E3F02F07F5C563044B5B9D63BD21477AD72CFF0B655FA8CD61999453D02E69F0AADB308F22C2811F0E1524588ED9AECF7EC2D739CF41197BDFCA8296B44EA9987EC6CD2123CDD296FFE62282520EC86F728833EE10E120F30805D58F9701FAD05172B16CC3491DDB94993A82E40E130DA5EF657E5BA8C01F0513F0341057C89A9757A136E72244D29A7D0BDE45BE3B602D44722B40C655FC7B83A804D06D3A274869DD3C9DF8F1838FA9385BAE1DF5AC79156070FC20049E19048CD06FAC4F18001E14198D4CCF5A0CB6E467AD05F43B9EB41792BA0AC1CD07DA05028140A05028292682DAD5418CEAE830DF771411F264119E341172A591939A248B93705249E3511152AEE520F88FE746514EEA77E2ACAD97D4856307079D0C2D47DA5F747BED6228A89F6E2B85A59F97B27F2A184E46DB3D96380999765'
    $JpgBin &= '32B3FBB97137B77E2B6CFF008511984BC3DB069574051BE69E715EB72EC88FECAD031F9D49866FFDABE9B29CA6E16557C2F31F1FF35061CBDB069E68102E9A6D07CDCBD215FA212AA0D76EBB6884B0A433A9EDCCF97D5F01C90AFEF38529FD28350B9EB6B65DDD0B929B9DD959C83709443693E696DBC01F0C9A0CA87A896E34196D0CC76339EC586C368CF9EE8E19F5A09B837552B1E2A09C853D471C6826624B271C682563482473A09161E3C38D06734E5064B6AA0C8A0A54682CAD5418EEAE830DF748A08F90F919E341172A51E3C6822A54F29CF1A8A48B93765273E2E5465132750B8CAB7D0E94A871041E5430C756D15F8AE854965A9583C17928707AEF2789F9D0C256DFB6AB5324264CD9D171CC48653213F9A4855672C4C27A06DA34B3E3C57EB093E4EC95C73F92D07F9D65149236B3A656329B9D8D7FC37963FC48A0C795B5BD3884906E5A7D3FEF2F8D0FF941341073F6D169196DAD47616F3C951D0ECB50FC825341A95FF68B1AE396E5DCAF7746D5C93BE9891963C8A51927F3CD060DBF5321B1BB6E8916DE82307B04616479159CA88F89A098817652B1E2A09D857151C71A09A87349C71A0978B249C71A0938EF93D6833D974D065B6BA0C842A82E034155028140A05028285505A705062BA0D060C849E3411B29078D0444C6D5C6820E734BC1C50405C59730460D630CC4B5E9D0DE502A51284799EBF0'
    $JpgBin &= 'A619CB58BBB2FA77931D0539E6A3ED1FE94C1B4D2EEF6A96E6F6378D651CB50B9E9D9EB2774AC50413DA32E0B777D2EBC3D3341256CD2F3DA232A59A0DB2D36698DEEE77A836EB55BDF18DE06836BB643786381A0D9ADD1DC18E06836280CAC6381A09D84DA86282622215C282523A4F0A0CF641A0CB6850651E54142A82CB828315E068305F49E3411B25078D044CC428E682126B4BE270682067B4E6E9E078D19CB5CB930E9CF0358C3396AF7688FA81201A60CB53BADB652F38C8ACE18996A375B0CD71471BC3E1461AE4DD233DE567B47527D282EC0D2970654015B87E341B3DAAC73118C85506E5648B2D9010A1BE83CD2AE46836CB6DBD4B00B3907EE2BFC0F5A0D86DD15D49008208E941B1DBD958C703413D09A570A09A88DAB8504AC649E14124C24D066340D064A0505E4F3A0AA8140A050281402282DA934169C6F3418AEB39E94186FC5CF4A0C0910B3D282364DB77B3E1A08B936A07242378F991C28226658CB84952493EB41132F4D8513F67FA5045C8D28957EEFF004A0C07747209FD90FCA82C9D169CFEC87E54175BD1A8FF00BAE3F0A0CC8FA4929FDD7E94125174C84E3ECFF4A0958960DDC783F4A0968B66DDC78682562DB318F0D049C7838E94120C45C74A0CE658C74A0CA6DAC505E4A31417683E114142939A0B0E379A0C6759CF4A0C37E367A5047C8859CF0A08D956ECFBB41172ED3BDEED044C'
    $JpgBin &= 'BB1EF67C141152F4E850F63F4A08A91A582B396FF4A08F7F4825478B5FA5063AB46233FB11F950548D1A8E45A1F95064B3A452923ECBF4A0918DA5C271F67FA504AC5D3DBB8F0504C45B410005A3780EBD4504A45B501C40C81E9CA824E35BF18F0D04947878C70A0CF66363A5065B4CE283250DE282F2534158140A05028140A05028141F08068295201A0B6A641E9418EE309CE00DE5797F5A0B0B8215ED0CFA7414165CB7A4FBB418EE5B127DDA0C772D093EED059559927DCA0B46C88FB9414FD469FB941F458D1F7282E26CA9FB8282F22D091EED064376B48F768321BB7247BB4190DC203A505F44503A505E430074A0BA96C0A0AC240A0FB40A050283E148341429B0682D2D807A50595C607A5063B90C1E9418EE5BC1F768319CB624FBB418EBB424FBB416176649F7282D2AC693EE5051F5127EE507D1634FDCFD282B4D913F7282F22CC91EED05F6ED291EED064376C48F76832116F4F0E1823A8A0BE88BB9ED27879814192DC74E01141792C81D282EA50050540507DA05028140A05028140A050283E29412324D051852F9F853E5D4FF004A0AC25206000050374507CDC141F3B24D052594F9507CEC13E541F3BBA7CA81DDD1E5FA503BBA7CA83EF609F2A0FA194F9507D0D2682A08141F424507DC5028140A05028140A05028141F30283E148A0F85B1414964795052584F9507C3193E541F3BB27C8507CEEA'
    $JpgBin &= '9F2140EEA9F4A0FA2327C8507D11D3E54150613E54150680E941F43605055BA2828DCC1CA0E0F974341F52A19DD23755E5E7415D028140A05028140A05028140A0B7BC55C1BE3F88F2FF003A0A92900E4F15799A0AA8140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028141F14028608C8A0A30A472F127F51FD682B4A828641A0FB40A05028140A0502829528038E24F90A0A774ABDBC63EE8E5FE741728140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A050281414A9209C8E0AF31414EF14F05F0FC4397F9505CA05028140A0F8480324E050500A97CBC29F32389A0A929091C07C7D682AA05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A0B7B853EC631F74F2F9795054950271C41F234155028282BE3848DE3D7C850128E214A3957E83E1415D028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A0A5490A1C47C3D28292549E7950F30388A0AB7D1F793F9D05540A05028140A05028140A05028140A050634E97161349765C962336A712D85BAE0402A5282529C9EA49000EA481418726FF00'
    $JpgBin &= '628CD38EC8BDDB996DA756CB8A72521210E21256B4124F052520A88E60024F0A0ADCBCDA1B71E43D758085B2A690EA552100B6A7783615C7815E46E83CF3C33414FF00A4163EC3B7FAEEDBD9774EFBBFDE91BBDDFF00EFB39FD9FE2E5EB4176E576B5DB56C22E37385095257D9C7121F4B65D5FDD4EF11BC788E02822ADFAC2C32EF536CEA9CCC49D1669841890EA10B90E06D0E12D277B2A187074CE41E1419B2AFF618D04CD7EF16F446CBA03864A37545A0A2EA41CF129085950E9BAACF2341048DA7684541B55C0EA6B6A235CD6A6D8714FA1212B4B61C525C24FD990149C856305690789141B1BB7AB3B5776ED0EDDA03772753BCDC3548407963CC233BC4703D28311ED55A6196DD75ED49676DB657B8EA9539B010ADE52704EF703BC852707AA48E8682D31ABB4E3FAA9ED2EDDE627D6ED34877BB179216B0B4A9637067C44253BC40E49209E0450675BEFB64B8BD29AB7DE2DD2DC8871252C4942CB3FC601F0F23CFCA8238EB1B0392ED4C409EC5C937396E4469E84FB6EB6DB88696EA82D415C3C283CB272470EB412C8BB5AD76AFAD917286AB76E15F7B0FA4B3BA39AB7F3BB8F5CD061BDA9F4D336D8F737B515A1B83215BAC495CD6C34E9F24AC9C28FC0D0573B5169F812531A75FAD715E56E6EB6F4B6D0A3BF9DCC0273E2DD563CF071CA8322D976B55D3B616DB9C29C63B9D9BFDDDF4B9D92FEEAB749C1F43'
    $JpgBin &= '419F416643ED468EE487DC434CB482B716B384A52064927A00283519FAFA3C5D231F5537A7AF72EDAF32EC8538D2584169941F0B8B0E3A8E0B4F8938C9C7300F0A0C399B51B6456A5487AC5A8046808655717BB068261171B4B810E24B9BC5412B4E7702867913412B78D6912D77D62DB2ED17A4B0F4B661A67F7602376CEE371209505AB25406F252520E413C0E02DBFAEE031774437AD17A6A22E70B7A6E4B8C1318C82ADC08C956FE0AFC3BDB9BB9EB417226AF13752CDB2C3D397B929832C44933901811DB594217C72E859012B493841F9D0494EBFC48BA96DFA7FB379E9D35B71EDD6920865A40E2E39C7C292A2948F327D0E02374DEB0FADF52C9B03BA72F56B951A2A6538A9818280952B75232D3ABC2958510081C126836BA05028140A05028140A05028140A05028140A05028140A05028140A05028140A0502835DDA3DA245F743DDADB0C0335C60B9101207DBA085B5C4F01E34A78D073AD1DB3CBE2AFB346A3881BB6DC624A9D2076C85EE4E9884B6EA3009F6501632381DFE04F1A0C5D09A135933A96CF74BFC54A51254CBD781DE10ADC721B6B6E37251CEF1295F0CE377070683123ECD355A2EEC85444882DCA3663F6EDF1B38921F0BC6F7503B3DDF6B3C718A0DAF6A964D417E55B6E168D30B5DC184C861264C98CA69292E2301F697BC95B2B080ACA4F689C278039C05BB968CBB3D36F53516964C991'
    $JpgBin &= 'ABEDF3D8777DBDF315AEEDBEBDECE401BAEF84F1E781C78861DBF4BEA9EFD65B4BF615370ADF7ABA4A767AA4B25B71A90893D994A02B7F9BC90410083D08C9015DBAC3A9A2694D0FBFA496E4CD312035261A6547DE94D888A64BCDA8AF77054A070B295784F0E54145CB446A291B4D97356C4D76D726F512E687D97A221B40650D8C2CAD0A7F7816C80941DD20F34E4D0513B445D9AD04CC7674EADDBC22F93A7031A4C743A8ED1C7FB3708732DBA9285A12A42C8F0A8F518A09BD3963D436ED59DBCBB2C608B8D821C47A54153686A0C8650F6F008242B7095A427701C70CE071A0D56DBA07544AD3EBB52EC91ECAF44D20FD8C3FDE5B52673EB2D90B1B84908FB35125601CB87873A0CAD51A2AF5AC19B7B0DE9856911DE54995223CB614F6E77275A0A504120A7794946012A2951C84D04FDE6DFA96F9B39876B7F4C2224F82A8121C861E644792597D2A7196F75442414B608DE0061691D15808DBBD8AF6EDCA35FA36CF58DC722DC233B6B4CB8FBE85BE5A297D6490DE541B21412A51008E7C4008F93B3ABE8D2F7EB7BB6C8F366B9A4205AE1BBDA3677E4349743894951052325B393807879700DEF4CE9F7ED5AF6F93DA82D45B749B6C062396B712952DA2FEF8DD1C4602D1C48EBC39506CEB61F33DB92263A9650D290A8C128DC5A89042C9C6F6400400081E2390786035FDA5E9DB8EA8D39F5340B9B1012EBEDAA4'
    $JpgBin &= 'F6EC29D44865272A65412B490951DD0704646475A0D5ED9A7759CAD2965B16A14A24A4EA071FB8A82C6130DB75C75A4E0AD44A54B4B402413BA821247026821F5EE83BADD6FDA91E46976EE570B9BCC2ED37D329B47D589421090082A0B4EE2D2A5F802B7B7B8D06C5AAED1A92F5ABED64E9E8C9FAB6EACC9877D6E42125B88374BCD2904EF95AF0A4600DC2140E46283060C0D4971D622E1AB74BDFE7A58B92956F4A27444DBE1B6970869EEC83C16B584E1454A492093BA060507CBD691B8CBD7499D0B49310A50BE313957E6A702151D010168282ADF0A5A13B85013B87392682EAB486B487B508DA898BC45970E65D14E4DDD654DB8CC34B2E25A655F6B85A0150C009F6D5BE738C506D1A0ED73E1AAF773BB305BB85CEE8F3C415A5443083D9B09CA4918ECD0938E85473839A0DAA8140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A05028140A050283FFD9'
Return $JpgBin
EndFunc
Edited by PhoenixXL

My code:

PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.

Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners.

MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. 

Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression.

Share this post


Link to post
Share on other sites

Try this:

;coded by UEZ build 2012-08-10 beta

#include <GDIPlus.au3>

_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

;======================================================================================
; 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-08-10 Beta
;=======================================================================================
Func _GDIPlus_WatermarkImage($sBitmapFile, $sSave, $sText, $iX, $iY, $sFontName, $iFontSize, $fAngle = 0, $iFontColor = 0xFFFFFF, $fAlpha = 0.05, $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)
        _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

Br,

UEZ

i was your script editing to

_GDIPlus_Startup()

$sIn=@ScriptDir&"desk_back.png"; StringReplace(@AutoItExe, "autoit3.exe", "ExamplesGUImsoobe.jpg")

$sOut=@ScriptDir&"Watermarked.png"

$r= _GDIPlus_WatermarkImage($sIn,$sOut,"AutoCool",110,350,"Arial",60,0,0x000000)

;~ $sBitmapFile, $sSave, $sText, $iX, $iY, $sFontName, $iFontSize, $fAngle = 0, $iFontColor = 0xFFFFFF, $fAlpha = 0.05, $iJPGQuality = 90)

_GDIPlus_Shutdown()

If$rThenShellExecute($sOut)

Exit

out put png is

Posted Image

i need png is

Posted Image

$iX , $iY,$iFontColor is Wrong behavior too.

how?


I interest am many quite in AutoitScript.From that is [http://cafe.naver.com/autoitscript[/color]] Korea of cafe(blog) to be operating, [size="2"][color="#ff00ff"]English cannot well[/size].Many help it requests.To read, it stands it thanks.

Share this post


Link to post
Share on other sites

Thanks davidkim for reporting it. I update the code from post#4.

I forgot 2 lines for setting x and y position... :whistle:

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Thanks UEZ for you code. It works very well...

I have two questions, it's possible the center the text on the image?

It's possible to detect if the test is too big for the image, cut the text and send to the next line?

Share this post


Link to post
Share on other sites

More or less everything is possible! ;)

Currently I'm working to add the watermark feature to my screenshooter app where you can select the area on the screen where you want to place the text. When it is finished, can take some time because I'm very busy at the moment, I will update windows screenshooter.

Meanwhile I will modify the function to position the text on the bitmap selecting one of the 9 positions. Regarding the line break I have to think about some possible scenarios how to implement it properly. If the text is in the center it is ok but for the buttom possition it can be a problem...

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

@ricky03: I update the code from post Please try again and post your results.

Thanks,

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

It works very well, but I have more one question, it's possible to add a position 10

And with this position, the Y position is used but the text is centered, it's possible?

I have a warning, because $iDeltaPos is not used!

Share this post


Link to post
Share on other sites

The line with $iDeltaPos (81) can be deleted (I forgot it).

Regarding your 2nd request: of course it is possible but consider all possibilities will go beyond the scope.

Let me think about how to implement it without production too much code.

Br,

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

@JScript: you are welcome! :)

@ricky03: I added two parameters $iAdjX and $iAdjY where you can adjust the x respectively y position of the text!

Br,

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

whenever I watermark an image, the watermark is always dark grey for some reason. I tried changing the color to a lot of different ones. Any ideas?

Share this post


Link to post
Share on other sites

whenever I watermark an image, the watermark is always dark grey for some reason. I tried changing the color to a lot of different ones. Any ideas?

You mean the font? Which code did you used? The one from post#4?

Br,

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Can you post the created image?

Is it working with this: http://www.autoitscript.com/forum/index.php?showtopic=145873 ?

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

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  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Gowrisankar
      Dear members of the forum,
      I'm working on a project in which I have to use Image recognition technique. 
      Due to client restrictions, I couldn't use AutoIt for this project. 
      Is there a way to use this DLL "ImageSearchDLL.dll" (which is used to do image recognition steps in AutoIt) in VB.Net to achieve the same result? 
      I have used this DLL few years before and got good results. If there is a latest version of this DLL and if you can share it, that will be helpful too.
      Any guidance is deeply appreciated.
    • By Cengokill
      Hi everyone,
      I have created a ListView that is in a tab, and I want to display an image in that tab, with the ListView on top.
      However, the image still appears on top of my ListView.
      If I remove the tabs everything works. 
      I looked at the autoit documentation and the <GuiListView.au3> documentation , I can't figure out how to display a background image, and put on top a ListView, inside a tab. 😥
      Here is the code:
      Opt("GUIOnEventMode", 1) $Form1 = GUICreate($Titre, 700, 627, $Form1Width, $Form1Height); main window $tabulation = GUICtrlCreateTab(148,0,700,580); creating tabs $tab1=GUICtrlCreateTabItem("Tab 1"); first tab GUICtrlSetState(-1, $GUI_SHOW); this tab is selected by default $Pic1 = GUICtrlCreatePic("image.jpg", 0, 30, 700, 627) GUICtrlSetState(-1, $GUI_DISABLE). $idListview = GUICtrlCreateListView("list 1|list 2|list 3", 200, 50, 390, 200) GUISetState(@SW_SHOW) While 1     Sleep(100) WEnd Thank you in advance.

    • By amosrinat
      Hi,
      i have an AutoIT script that sends emails with two embedded images.
      When users get the email they don't see the images. How should I fix my code?
      Thank you for your support,
      Amos
      Func fSendMail() $TemplateName = StringRegExpReplace($Template, "^.*\\|\..*$", "") $SmtpServer = "smtp.**.com" $FromName = "do-not-reply@*********" $FromAddress = "do-not-reply@******" $ToAddress = $MG1_Mgr & ";"& $Owner $Subject = "ACTION REQUIRED - " & $TemplateName $Body = $sBody5 $IPPort = 25 $ssl = 0 Global $oMyRet[2] Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $rc = fINetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $IPPort, $ssl) If @error Then MyErrFunc() EndIf EndFunc;fSendMail Func fINetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $IPPort = 25, $ssl = 0) Local $objEmail = ObjCreate("CDO.Message") $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' $objEmail.To = $s_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 Then $IPPort = 25 $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort $objEmail.Configuration.Fields.Update $objEmail.Fields.Update ;$objEmail.Send **************** If @error Then MyErrFunc() EndIf $objEmail = "" EndFunc;fINetSmtpMailCom  
    • By coronatuss
      Hello everyone,
      Im developing an script to check the size of all .jpg stored in windows folder.
      The problem is that it doesn´t work properly with rotated images. 
      With _GDIPlus_ImageGetWidth() and _GDIPlus_ImageGetHeight()  I get the Width and Height of images as if they had not been rotated, and I need to know how they are rotated (orientation and grades).
      Any help is welcome! If more info is needed, please tell. 😁
    • By nacerbaaziz
      hello autoit team
      please i've a question for you.
      am creating a audio player
      and in this audio player i want to show the current trac info
      such as the total time and the position ... etc
      i know i can show it as label
      but the screen reader for the blind read the text every change
      because it have a screen scan
      what i want is to show this informations but such image or icon
      i mean i need to create
      GUICtrlCreatepic or GUICtrlCreateicon ....
      or some thing as that
      and show this informations as image on it
      i think that i can do that with the 
      _GDIPlus functions
      but i couldn't find the currect way to do it
      i tried the _GDIPlus_GraphicsDrawString
      but i couldn't know how it work
      what i need is a small example that create a GUI
      and add a multy line text to it as graphic or image.
      so i need a simple way because it will changed every sec
      i hope any one can help me to do that
      global $GUI = GUICreate("text", 400, 400) global $label = GUICtrlCreateLabel(GetText(), 10, 10, 380, 380) GUISetState() do sleep(100) until GUIGetMSG() = -3 exit func GetText() return StringFormat("file name is test.mp3 \r\n total time is 00:30:00 \r\n position is 00:05:50") endFunc  
×
×
  • Create New...