Jump to content

Save/Retrieve images to/from Text string


Nine
 Share

Recommended Posts

Recently someone ask about saving images into a text file.  I found it interesting enough to spend some times on it.  And felt it may be worth publishing it as an example script.  This provide an alternative way to save/retrieve image from the well-known Base64 encoding.

With this example you can save/retrieve image into/from file, but also into/from the inside of a script.  I provided a simple tool to copy/paste the AutoIt code of an image into a script.

Let me know if you want to add / change functionalities from it.

#include <Constants.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <File.au3>

Opt("MustDeclareVars", 1)

Const $SIZE = 600
Global $tImage  ;  This buffer must be declare for each image that you create

_GDIPlus_Startup()

Local $hBitMap = _ScreenCapture_Capture("", 50, 50, 50 + $SIZE - 1, 50 + $SIZE - 1, False)
_WriteImageToText("Test.txt", $hBitMap, $SIZE, $SIZE, False)

Local $hImage = _ReadImageFromText($tImage, "Test.txt", $SIZE, $SIZE, True)

_GDIPlus_ImageSaveToFile($hImage, "Test.jpg")
_GDIPlus_ImageDispose($hImage)
$tImage = 0   ;  recommended when GDI+ handle is not required anymore and you want to reuse the same buffer

$hImage = _GDIPlus_ImageLoadFromFile("Capture.jpg")
Local $aDim = _GDIPlus_ImageGetDimension($hImage)
ConsoleWrite("Note this information to use into _ConvertStringToImage : Width = " & $aDim[0] & " / Height = " & $aDim[1] & @CRLF)
Local $sImage = _WriteImageToText("", $hImage, $aDim[0], $aDim[1])
_ConvertStringtoAutoIt($sImage)

; At this stage you will have to paste clip board in a "_ConvertStringToImage" like function (this has been done for you in this example)
; Exit

$hImage = _ConvertStringToImage($tImage, $aDim[0], $aDim[1])
_GDIPlus_ImageSaveToFile($hImage, "Test2.jpg")
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

Func _WriteImageToText($sFilename, $hBitMap, $iWidth, $iHeight, $bGDIp = True)
  ; Create text file to save image
  Local $hImage
  If Not $bGDIp Then
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitMap)
    _WinAPI_DeleteObject($hBitMap)
  Else
    $hImage = $hBitMap
  EndIf
  Local $tBitmapData = _GDIPlus_BitmapLockBits($hImage, 0, 0, $iWidth, $iHeight, $GDIP_ILMREAD, $GDIP_PXF32ARGB)
  Local $iScan = DllStructGetData($tBitmapData, "Scan0")
  Local $tByte = DllStructCreate("byte string [" & $iWidth * $iHeight * 4 & "]", $iScan)
  Local $sString = Hex($tByte.string)
  If $sFilename <> "" Then
    Local $hFile = FileOpen($sFilename, $FO_OVERWRITE)
    FileWrite($hFile, $sString)
    FileClose($hFile)
  EndIf
  _GDIPlus_BitmapUnlockBits($hImage, $tBitmapData)
  _GDIPlus_ImageDispose($hImage)
  If $sFilename = "" Then Return $sString
EndFunc   ;==>_WriteImageToText

Func _ReadImageFromText(ByRef $tByte, $sString, $iWidth, $iHeight, $bFileName = False)
  ; Recreate image from text file
  If $bFileName Then $sString = FileRead($sString)
  Local $dData = Binary("0x" & $sString)
  $tByte = DllStructCreate("byte string[" & $iWidth * $iHeight * 4 & "]")
  DllStructSetData($tByte, 1, $dData)
  Return _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $GDIP_PXF32ARGB, $iWidth * 4, DllStructGetPtr($tByte, "string"))
EndFunc   ;==>_ReadImageFromText

Func _ConvertStringtoAutoIt($sImage)
  ; Format the string image into AutoIt script Const variable
  Local Const $LINE_SIZE = 4000
  Local Const $FILE_NAME = _TempFile(@TempDir, "~~", ".txt", 10)
  Local $iPos = 0, $sTxt
  Local $hFile = FileOpen($FILE_NAME, $FO_OVERWRITE)
  While True
    $sTxt = StringMid($sImage, $iPos + 1, $LINE_SIZE)
    FileWrite($hFile, '"' & $sTxt & '"')
    $iPos += $LINE_SIZE
    If $iPos >= StringLen($sImage) Then ExitLoop
    FileWriteLine($hFile, " & _")
  WEnd
  FileSetPos($hFile, 0, $FILE_BEGIN)
  $sTxt = FileRead($hFile)
  FileClose($hFile)
  FileDelete($FILE_NAME)
  ClipPut($sTxt)
EndFunc   ;==>_ConvertStringtoAutoIt

Func _ConvertStringToImage(ByRef $tBuffer, $iWidth, $iHeight)
  ; Convert the below Const variable into a GDI+ handle
  Local Const $IMAGE = "6F461FFF6F461FFF6D4620FF6B4620FF6B4523FF6A4523FF684523FF684523FF694422FF684420FF6E4721FF754D23FF774D23FF73491CFF744519FF784818FF7A4A16FF764612FF774815FF774D1EFF774E27FF6B4925FF634326FF5E4329FF543C28FF5A4635FF594637FF554437FF534337FF4F3F33FF504138FF614E46FF583E37FF5D4039FF5B3E35FF583B32FF5C4035FF624739FF654839FF624431FF5E4027FF634425FF674422FF69461BFF6E471AFF744D19FF764C17FF734914FF724716FF75481CFF74491EFF734620FF6F431EFF6D401FFF6C4021FF6D4124FF6D4227FF6D4326FF6D4326FF6D4423FF6D4423FF6D4620FF6D4620FF6F461FFF6D461FFF6D4620FF6B4620FF6B4522FF6A4622FF6A4523FF6A4622FF76512FFF6D4724FF66411BFF69421BFF6A4218FF693F15FF6E4318FF784B1FFF764A1BFF75491AFF71471CFF6B441DFF63401EFF5D3E1FFF5D4228FF5F4733FF8C7867FFA39285FFC1B1A5FFDDCEC5FFF9EAE1FFFFF6EEFFFFFAF2FFFFFFF8FFFFF1EBFFFFF5EFFFFFF1EBFFF8E1D9FFD9C2BAFFB39A90FF876F63FF6A5141FF5F4430FF62442BFF664728FF6B4826FF69451DFF654014FF6D4717FF7A5222FF744B1EFF764C21FF6F451BFF683C17FF6E411FFF784D2CFF774B2CFF6C4023FF6F4326FF6D4326FF6D4424FF6D4423FF6D4522FF6D4522FF6D4620FF6D4620FF6D4620FF6D4620FF6B4620FF6B4620FF6B4620FF6B4522FF6B4620FF623C19FF6A451FFF704A27FF6E4923FF6D4620FF6D4620FF6D4620FF6C451FFF5F3A18FF684726FF694A2BFF5E4126FF674D35FF98806CFFD9C5B4FFFFF2E5FFFFF6EDFFFFFEF6FFFFF8F2FFFCF1EDFFFFF5F1FFFFF6F4FFFDF1EFFFFCF0EEFFFEF1EFFFFFF3F1FFFFF5F3FFFFF5F2FFFFF8F5FFFFFDF7FFFFFCF5FFFFFAF1FFE5D2C5FFB29B8BFF7B624EFF654931FF64462BFF644224FF664322FF6C4725FF643F19FF6B441EFF744C29FF79512EFF724928FF693E1DFF6A3F1EFF744627FF714324FF6F4324FF6F4423FF6F4423FF6D4522FF6D4522FF6B4522FF6D4522FF6B4620FF6B4620FF6B4620FF6B4620FF6D461FFF6D4620FF6D4620FF69441EFF6F4A24FF6C4623FF633E1CFF66411FFF6F4C2BFF6E4B2AFF5F3F22FF694E39FF4E3826FF655140FFB6A394FFFBEADDFFFFFAF1FFFFF6F0FFFFFBF7FFF7EEEBFFFFF8F8FFFDF5F5FFF6EEEEFFFEF6F6FFFFFCFCFFFFF8F8FFFEF6F6FFFFFAF9FFFCF7F6FFF7F2F1FFF3EEEDFFF2EDECFFF7EFEFFFFBF1F1FFFEF2F0FFFFF6F2FFFFF7F1FFFDEAE2FFD4BEB2FF947A6CFF614435FF563827FF654430FF705033FF674625FF613D1FFF653F1FFF6A4323FF6D4423FF6F4423FF734624FF714422FF714422FF714422FF6F4522FF6D4522FF6D4522FF6B4522FF6B4523FF6B4522FF6B4620FF6B4620FF6D461FFF6F471DFF6F461FFF6F461FFF744D27FF694320FF66411FFF674625FF67472AFF5D4025FF593E24FF563E2CFF52423BFFC0B4B2FFFFFFFCFFFFFCF9FFE9E1E1FFF5EFF0FFFFF8FBFFEFEAECFFF5EFF4FFFFFAFCFFFCF7F9FFF4EFF1FFF8F1F4FFF8F2F3FFF5EDEEFFF3EDEEFFF7F5F5FFF6F6F6FFF9F9F9FFFBFAFCFFFBFAFCFFF8F7F9FFF8F5F7FFF9F4F6FFFBF4F9FFFFF5F8FFFFF6F8FFFFF4F5FFFCE8E7FFD4BFBEFF917979FF5B413BFF523827FF60442CFF65472EFF624127FF674325FF704929FF734926FF6D411CFF724520FF724520FF724520FF714520FF6F4522FF6B4522FF6A4523FF6A4523FF6A4622FF6B4522FF6D461FFF6F461FFF6F471DFF71471DFF6F461FFF68411BFF623C19FF684726FF6F5134FF593F27FF48301CFF6B5543FF9E8E82FFF7EFF0FFEFEBF1FFEAE8EEFFECEAF0FFF6F4FAFFFFFDFFFFFFFDFFFFFAF6FCFFF8F4F9FFFFF9FEFFFAF5F7FFF8F2F3FFFFF7F7FFFFF7F7FFFFF7F5FFFFFFFCFFFBF8F4FFF6F5F1FFF5F3F2FFF3F4F2FFF2F2F2FFF2F1F3FFF8F4F9FFFEFAFFFFF7F0F7FFF8F0F7FFF7ECF4FFFAEDF5FFFFF8FFFFFFF7FFFFE9D8E1FFC7B4B7FF715C54FF5D4636FF563C2BFF664A32FF6D4C32FF664022FF673D1AFF724621FF72451FFF74451FFF72451FFF71461FFF6F4520FF6B4523FF6A4424FF684523FF6A4622FF6B4522FF6D461FFF6F461FFF71471DFF71471DFF6F461FFF6E4721FF6C4725FF644427FF553B23FF533D2BFF786556FFC4B3AAFFFFF6F2FFF6F2F8FFF5F5FFFFF9F8FFFFF6F5FFFFF6F3FCFFF5F3F9FFF3EFF5FFF1EBF0FFFBF4F7FFFAF2F2FFF9EDEBFFFFF4F0FFFFFCF6FFFFF4EDFFFEEDE4FFFFF3EAFFFFF9EFFFFFF7EDFFFFF7EEFFFFF7F0FFFBF5F0FFF8F1EEFFFAF2F2FFFDF6F9FFF7F0F5FFFDF5FCFFFFF7FEFFFBF2FCFFFBF1FDFFFFF7FFFFFFF8FFFFFFF6FEFFEEE1DFFF9D8B84FF523F32FF4A3220FF61422BFF6B462AFF6E4524FF754A23FF72461DFF74461DFF72461DFF71461FFF6D4620FF6A4523FF684524FF684523FF6A4622FF6B4522FF6D4620FF6F461FFF6F461FFF6F461FFF6D4620FF643E1BFF6C4A2CFF62442BFF5A422EFF8E7B6EFFE4D5CCFFFFFEFAFFFAF2F3FFFAF6FCFFF3F2FCFFF4F1FAFFF7F3F9FFF9F3F8FFF9F2F5FFFCF4F5FFFFF7F5FFFCF0ECFFDDCDC6FFB3A098FF9C897CFF988172FF8E7664FF8D7563FF9C8472FF8E7866FF8B7563FF8D7968FF9B8978FFAF9E91FFCABAAEFFEADAD3FFFFF3F0FFFFF4F2FFFDF2F4FFFCF3F6FFFBF4F9FFF9F1F8FFF4ECF6FFF3EDF8FFF9F1FBFFFFFBFEFFF8ECEAFFBBABA4FF6B5549FF4C311DFF644329FF734D2DFF693F1AFF71471DFF72471CFF72461DFF" & _
      "71461FFF6D4620FF6A4523FF684524FF6B4624FF623E1AFF754F2CFF623D17FF744D27FF714A24FF67401AFF694320FF634221FF694B30FF5D422DFF927E6DFFFFFCF3FFFFF5F1FFFFF9F9FFFFF7F8FFF2EBEEFFFEF7FAFFFFF8F9FFFBF1F1FFFFF8F4FFFFF6F0FFDCCBC2FFA69386FF947D6DFF977E6AFF9B7E69FF9D7F66FF9E8065FFA08063FFA28063FFA48062FFA68062FFA68062FFA47F63FFA27F65FF9E7E67FF9B7E69FF997D6CFF947D6DFFC2AFA2FFEFE0D7FFFFFAF4FFFBF0ECFFF7EFEFFFFFFBFCFFFEF9FBFFEEEBEDFFF8F1F6FFFDF5F6FFFFFBF7FFDBCAC1FF705949FF52361EFF613F21FF734D2AFF704720FF73491FFF6C4218FF6B421BFF734C26FF6F4A28FF654221FF6E4825FF643E1BFF6E4825FF6D4822FF694320FF66401DFF6E4927FF684628FF66482DFF563C24FF97816FFFFFFDF2FFFFF7F1FFF9EDEBFFF9F1F2FFFFF9FAFFFFFBF7FFFFF1EBFFFFF0E9FFFCE9E1FFD5C2B5FFA38C7CFF947B67FFA78B73FF9E8065FFA28063FFA68060FFA7815FFFA9815EFFAB815CFFAB825BFFAE815BFFB2815BFFB2815BFFB0805CFFAE805EFFAD805FFFA78060FFA47F63FF9E8065FFA0866EFF97826DFFC1AF9EFFF9ECDEFFFFF8EEFFF6EFE6FFFAF4EDFFFFFBF8FFFDF8FAFFF4EDF2FFFFF9F9FFF8EAE4FFE1CEC1FF765D49FF5A3D22FF674625FF623E1AFF734C25FF734C25FF6A431CFF65401AFF67411EFF694422FF704923FF69441EFF6A4421FF724E2AFF623D1BFF654423FF6B4B2EFF5A3C23FF5C412CFF9C8674FFFFFFF4FFFFF5ECFFFFF4F0FFFFFCFCFFFCF4F5FFFDF1EFFFFFF2E7FFFFFCECFFF3D9C8FFB09581FF8F725DFF9E7F66FFA58366FF956F4FFFA7815EFFAB815CFFAE815BFFB08259FFB08358FFB28357FFB28357FFB58257FFB98257FFBB8157FFBB8157FFB78158FFB58159FFB2815BFFAE815CFFA9815EFF9B7857FFA48669FF937A60FF95806AFFD0C2ACFFFFF6E2FFFFFBE9FFFFF6ECFFFDF7F8FFF2EBF0FFFFF6F8FFFFFFFBFFFFEFE3FFEBD7C6FF6D553DFF573B1DFF6B4C2BFF64421EFF633F1BFF6C4721FF6E4825FF66401DFF66401EFF70481EFF714A23FF6C4721FF6D4826FF603F1EFF6D4F32FF563C24FF553D29FF917C6DFFFFFFF5FFF6E7DEFFFFFAF4FFFFF7F3FFF4EBE8FFFFF8F9FFFFFDF9FFFFF1E1FFCDAE97FF9C7D64FFA28167FFAB866AFF9F7959FFA47C59FFBD926BFFAE8259FFB08358FFB28357FFB48357FFB48355FFB48355FFB58355FFB78355FFBB8255FFBD8255FFBB8255FFBB8255FFB98257FFB58257FFB28258FFAE8259FFB99069FFA37F5BFFA38463FF9D8162FF887256FFAD9A7FFFEFDEC4FFFFF8E8FFFFF6F3FFFFFAFDFFF6EBEDFFFBF0ECFFFFFBF2FFFFF2E5FFE4D0BEFF5C462DFF654A2FFF5D4021FF5F3E1DFF694624FF6E4825FF6D4724FF6E4623FF71471CFF6E461CFF6F4822FF684523FF634326FF61472FFF483220FF887566FFFAE9E0FFFFFAF4FFF8ECE8FFFFFBF7FFF8EFECFFFFFFFCFFF3EAE7FFF4E4DDFFB19682FFAF8C72FFA27D61FF9D7757FFA77E5DFFB28863FFB1865FFFAA7C53FFB28258FFB28357FFB48357FFB48357FFB48357FFB28357FFB48357FFB48357FFB58257FFB58257FFB58257FFB58257FFB58257FFB48357FFB28357FFB08358FFA67A51FFAD845DFFA8835DFFAB8866FFA8896AFF8F7154FFA4876CFFE4CCB8FFFFF2EFFFF7ECEEFFFFFBFBFFFBF0ECFFFDF1EBFFFFFFF6FFFFF3E6FFBAA996FF57402AFF60472DFF6C4E31FF664524FF5F3A18FF6E4623FF784E29FF76491DFF6A4015FF6B441EFF6C4928FF62452AFF513925FF675445FFD9CAC1FFFFF6F2FFFFF4F2FFFFF8F8FFF6EDEAFFFFFDFAFFFFF7F3FFF1E6E2FFA18F84FF967760FFA27C5EFFA98262FFB08766FFAD8360FFA77C55FFA97D54FFB2855AFFB28258FFB28258FFB28258FFB28258FFB08358FFB08259FFB08259FFAE8259FFAD825BFFAD8359FFAD8359FFAE8358FFB08358FFB08358FFB08358FFB08358FFAF8459FFA3794FFFAB8059FFAA825FFFA27C5AFFB18B6BFFB49072FF8F725DFFC1AFA8FFFFFEFEFFEFE3E1FFFFFEFCFFFEF3EFFFF6EBE3FFFFFFF5FFFBEEE0FF8D7C69FF5E4933FF553A20FF6B4C2DFF6D4826FF663F19FF70451EFF754718FF70451AFF67401AFF6C4928FF5F442AFF5D4735FFB7A69DFFFFF6F2FFFCF2F2FFF3EBECFFFAF2F3FFFFFDFDFFFAF1EEFFE8DDD9FF92857DFF948174FFA2836AFFA57F61FFA67F5FFFAD8463FFAE8461FFAB8059FFAE8259FFB98B62FFB08259FFB08259FFAE815BFFAE815BFFAD815CFFAB815CFFAB815EFFA7815EFFA4815FFFA2825EFFA2835CFFA6825CFFA7835BFFA9825BFFAD8359FFAD8359FFAF835AFFB68A61FFAE815BFFA97B59FFAC7F5EFFA47859FFA3775AFFAB8972FF99847CFFBEB1AFFFFFF8F6FFF2E6E4FFFFFCF8FFFCF2EBFFFCF3EAFFFFFFF2FFE7DACAFF776653FF462E16FF6A4C2FFF775432FF67401AFF6A4016FF714216FF7C5027FF653D1AFF654326FF5A412DFF756457FFFCF0EAFFFAF2F2FFF6EFF2FFFFFDFFFFFFF7F8FFFFFAF8FFFEF1E9FF9B8A7DFF9B8776FF927762FFA17E64FFAA8363FFAC8362FFA77F5CFFAB7F5AFFAE835CFFAE8259FFA87C53FFAE8259FFAE8259FFAD815CFFAB815CFFA9815EFFA7815FFFA68060FFA28160FF9E8162FF9D8260FFA0825FFFA2825EFFA7825CFFA9825BFFAD825BFFAD8359FFAA7E55FFAB7F56FFB1845EFFB38661FFAE805EFFAE8160FFB08263FFA57D64FF997C6DFF8F7B70FFDDCCC3FFFFFAF3FFFBEFEBFFFFFFFBFFF6F0EBFF" & _
      "FFF8F4FFFFFFF8FFAA9D8FFF64503EFF5C4127FF5F3E1DFF6D4620FF784D22FF76431BFF774A25FF60381BFF6B4B34FF563F30FFE7D9D3FFFCF4F5FFF1EDF2FFF1EDF2FFFFFDFEFFF9EEEAFFFFFBEFFFB79F8BFF9A7D62FFA48160FFAC8664FFA78060FFA78060FFA9805FFFA9815EFFAD815CFFAD825BFFAE8259FFAE8358FFA97D54FFB1875DFFA87E59FFA77F5CFFAF8A68FFA07D5CFF977557FFAC8D6EFFA68A6CFF937657FFA17E5DFFAF8967FFA87B59FFAA7B55FFB4855FFFAD7F56FFAE8358FFAE8259FFAD825BFFAD815CFFAD805EFFAD805FFFAD7F60FFAB7F62FFAA8466FFA38268FF9F826DFFFBE4D5FFFFF5EEFFFFFDFBFFF9F2F5FFF9F3F8FFF8F1F4FFFFF9F6FF7D6C63FF5C4432FF644427FF6D4822FF66390DFF73411DFF724422FF6B432AFF5D3F2CFF907B73FFF8ECEAFFFBF6F8FFF7F5FBFFF8F7FBFFF0EBEAFFFFFFF8FFC9B5A4FFAA8D72FFA47F5DFFA57B51FFB2865DFFAB815EFFA7815FFFA9815EFFAB815CFFAD825BFFAD8359FFAE8358FFAE8358FFAE845AFFA87F58FFB18A64FFAA8563FF957355FFA18366FFB89B80FFB0957BFFAF967CFFB89D82FFA9876AFF9D7558FFB18463FFB68662FFAF7E58FFB4835BFFB08358FFAE8358FFAD8359FFAB825BFFAB815CFFAD805EFFAD805FFFAE7F5FFFB08361FF9B7251FFB08D73FFB29481FFFFEAE2FFF8EBE9FFFFFAFFFFF5F0F9FFF5F1F7FFFBF4F7FFC2B6B0FF5B4637FF62452AFF69441EFF744A1DFF71411FFF693E1DFF6B452DFF5E4231FFD6C3BBFFFFFAF8FFF6F1F3FFF8F7FBFFFBF8FAFFF3ECE9FFFCEDE4FF957F6DFF9C7E61FFA98360FFAC8057FFB0845BFFAB815EFFA9805FFFAB815EFFAB815CFFAD825BFFAE8259FFB08358FFAE8358FFB3895FFFA47D57FFA27D5BFF9E7C5EFFA88B70FFDFC5ADFFFFF6E2FFFFF6E4FFFFF7E5FFFFFAE5FFE5C9B1FFAE8D73FFA47C5FFFA67B5AFFA77A55FFB4865DFFAE8358FFAE8358FFAD8359FFAD825BFFAD815CFFAD805EFFAD805FFFAD805EFFAE815CFFA87E5BFFA78266FF93745FFFCDB7ABFFFFF4F1FFFDF4F7FFF9F5FBFFF7F3F9FFF8F1F4FFFFF5F1FF857265FF5D4228FF694422FF784E23FF744726FF683E21FF5F3D26FF896F5FFFFFF0E9FFFFFBFBFFF2ECF1FFF6F2F7FFF2EDEEFFFFF9F5FFBAA99CFF967E68FF9C7D5EFFA9825CFFB78C61FFAC7F54FFAD815CFFAB815EFFAB815CFFAD825BFFAE8259FFB08259FFB08358FFAE8259FFA77E57FFA8825FFF9D7B5DFFB3957CFFEED6C2FFFFFAE9FFFFF9ECFFFFFEF2FFFFFBF2FFFFF9ECFFFFFBEAFFF2D7C3FFB6947CFFA07A5CFFA97F5CFFA47952FFAE8259FFAE8358FFAE8259FFAD8359FFAD825BFFAD815CFFAD805EFFAD805EFFAA7D57FFB88C67FF9F7959FF9F8067FFA18878FFFCEAE3FFF9EFEFFFFBF5FAFFFAF3FAFFF8F1F4FFFFF7F5FFD0C0B4FF5B402BFF684726FF6B4319FF764D2DFF6C4529FF583924FFCEB6AAFFFFFBF8FFFEF6F7FFF8F2F7FFFBF6F8FFF7EFEFFFF2E5DDFF897564FFA0856BFFA58261FFA47B54FFB5885DFFAB7E53FFAD825BFFAD815CFFAD825BFFAE8259FFB08259FFB08358FFB08358FFAE8259FFAB845EFFA78463FFAA8D72FFD8C0ACFFFFFDF0FFFFFEF6FFF1E6E2FFF2EBE8FFEFE7E7FFEDE4E0FFFFFDF5FFFFFEF1FFDBC2AEFFAC8E73FFA78161FFA8815BFFAD8359FFAE8358FFAE8358FFAE8259FFAD8359FFAD825BFFAB815CFFAD815CFFAC7F59FFAB8059FFAB8261FF9F7D60FF9A7F6BFFC1ADA2FFFFF6F2FFF9F0F3FFF8F1F8FFFEF8FDFFF2E8E8FFFFF4EDFF705844FF65472AFF643F19FF6D462AFF68442CFF674B3AFFFBE7DCFFFFF4F2FFF6EFF2FFFAF4F9FFFDF6F9FFFFFAF6FFC2B2A5FF8D755FFF9F7F62FFAE8865FFA77D53FFAD8054FFB3865AFFAE8259FFAE815BFFAE8259FFB08259FFB08358FFB08358FFB08259FFAD825BFFAB8563FF9E7E61FFC7AC97FFFBE8D9FFFFF5EDFFFCF4F4FFFFFEFFFFFFFDFFFFFFFDFFFFFFFEFFFFFCF4F4FFFFF7EFFFFEEBDCFFC9B19BFF9E8063FFA98462FFAB825BFFAE8259FFB08358FFB08358FFAE8259FFAD8359FFAB825BFFAD825BFFB0845BFFA67953FFAC825DFFA68060FF9A7B62FF9C8373FFF6E4DDFFFFF8F8FFF7F0F5FFFFFBFFFFF2EBEEFFFFFAF6FFA38F7EFF62452AFF6C4824FF623F25FF62422BFF92786AFFFFF2EBFFFAF2F3FFF6F0F5FFF6F0F5FFFEF6F7FFF8EBE3FF9A8675FF9E8067FFA78463FFAF865FFFAD8257FFB18256FFB6875BFFB08259FFB08259FFB08259FFB08358FFB08358FFB08259FFAD825BFFA9815EFF9A7658FFB79980FFF4DECCFFFFFFF7FFFEF5F2FFF0ECF1FFF0F1FBFFE7E9F4FFEAECF7FFF1F2FCFFEDECF0FFFAF5F2FFFFFFF7FFF3E2CFFFB29B81FF957657FFA7815EFFAD825BFFAE8259FFB08358FFAE8358FFAD8359FFAB8359FFAB8359FFB2845BFFB08259FFA87B55FFB28A67FF9B795CFF9E816CFFC9B5AAFFFFFBF7FFF9F2F5FFF8F4FAFFFBF5FAFFFDF1EFFFE0CFC2FF624830FF694827FF5F4126FF634631FFBCA69AFFFCEDEAFFFFF9FCFFFBF7FDFFF3EDF2FFFFF6F6FFDAC7BFFF8A715DFF9B795CFFB8916BFFA77B52FFB18458FFB8885EFFAA7D52FFB08358FFB08358FFB08358FFB08358FFAE8259FFAD825BFFA9815EFFA68060FFA6886DFFEBD2BEFFFFFBEEFFFFF6F0FFFCF6F7FFF4F3FCFFEDEFFAFFF2F5FFFFF6F9FFFFEEF0FBFFF0F2FAFFF5F5F5FFFCF6EFFFFFFCEEFFE4D1BCFF9C8468FFA48160FFA9815EFFAE815BFFB08259FFAE8358FFAD8358FFAB8458FFAB8458FFAE8358FFAE8156FFB1835AFF" & _
      "AA7E59FFAE8866FF9D7E65FFA68F7FFFFFEFE8FFFFF7FAFFECE8EEFFFBF7FDFFFBF3F4FFFFFAF1FF654D39FF5F4021FF64462DFF513923FFF9E7DCFFFCF0EEFFFBF5FAFFF6F3FCFFF1EAF1FFFFF7F7FFA18B7FFFA4856EFFA57F5DFFAA8056FFB38458FFB6875BFFB18459FFAD8055FFAC7F54FFBF8F65FFAC7F54FFAB7F56FFAD825BFFA77F5CFFAE8868FF95745AFFDABFAAFFFFEBDBFFFFFFF7FFFFF4F2FFF0EBEDFFFDFCFFFFE2E4EFFFF7F9FFFFEDEDFBFFF5F5FFFFEFF1F9FFF1F3F4FFFEFDF9FFFBF7ECFFFFFEECFFC8B39DFF987A5FFFB28B6BFFA47755FFB78A64FFA87C53FFAA8055FFB28B5FFFAB8458FFAE8358FFAD8055FFB5885DFFA97D54FFB28661FF9F7B5DFF987D69FFEDDAD2FFFAF2F3FFFCF8FEFFF1EEF7FFF6F1F3FFFFF9F1FF96806EFF5D3F22FF61462CFF644C38FFFFF0E4FFFDF3F3FFF7F3F9FFF4F0FBFFF9F2F9FFFEF1EFFF9F8577FFA48369FFA97F5AFFB08155FFB58458FFB5865AFFB0845BFFAD8158FFB18157FFAC7D51FFB5875EFFAB8059FFAB8261FFA17D5FFF95765DFFC1A692FFFFF1E1FFFFFAEFFFFFF3EDFFF6EDEAFFFDF7F8FFF0ECF1FFFFFDFFFFDFDDE3FFF1E9F3FFF8F1F8FFF9F8FCFFEEF0F0FFE8ECE7FFFFFFF9FFF5EFE2FFFFF5E3FFC1A692FF957159FFAB8164FFA97C5AFFB1845FFFAE845AFFAA8356FFA98255FFAE845AFFAA7E55FFB7875DFFAF8054FFB3855CFFA67D5CFF9D7E67FFDCC9BCFFFFF5F5FFFDF9FFFFF2F1FBFFF7F3F8FFFFF8F2FFAC9887FF5E4126FF5F472BFF826B55FFFFF7EEFFFEF6F6FFF2EFF8FFF3EFFAFFFFFAFFFFF1E0DDFF9B7F6EFFA68062FFAF8158FFB48254FFB58456FFB28559FFAF845DFFAE835CFFB28258FFA97A4EFFB2845BFFAF8562FFAA8668FF96775EFF9E8473FFF4DED2FFFFFFF7FFFFF6F0FFFAEFEBFFFBF2EFFFFFFDFAFFFBF4F1FFF6ECECFFA99D9BFFBEAEAFFFFCEFEDFFF7EFEFFFFCFBF7FFF3F7F2FFF4F8F2FFFAF8F0FFFFFFF7FFEED6CAFFA07F6FFFA47B64FFA67A5DFFB28563FFAF855BFFAA8356FFA58153FFAD845DFFA87B55FFB7875DFFB38254FFB28357FFAD825BFFA18066FFC1AA9BFFFFF3F1FFF9F5FBFFF1F0FAFFF4F2F8FFFDF2EEFFCAB7A8FF5C3F24FF5E462AFF9C8771FFFFFAF1FFFFF7F7FFF2EEF9FFF4F0FBFFFFFCFFFFD8C5C0FF9B7B68FFA87F5EFFB48357FFB88455FFB58355FFB08358FFA9825CFFAA835DFFAF7F55FFB9885CFFA57852FFAC8565FFA38169FF977D6CFFD3BFB4FFFFF8F2FFFFF4F2FFF4EBE8FFFFF6F3FFFFFBF7FFFFF4EEFFFFFFF7FFC3B3A7FF877368FF90756BFFE6CDC3FFFFF1E8FFFFFBF4FFFDFFFBFFE0E6E1FFFFFFFCFFF3ECE9FFFFEFEAFFDBBEB5FF9D7667FFAE826BFFA87C5DFFAA815AFFB0895CFFA68155FFAC855FFFA67A55FFB7875DFFB68557FFB28052FFB0845BFFA68264FFA78F7DFFFFF3F1FFF6F2F8FFEFF0FAFFF4F2F8FFF7EEEBFFEBD8C9FF5B3E23FF604628FFAE9781FFFFF9EFFFFBF6F5FFF0EFF9FFF4F3FDFFFFF5FBFFBFABA6FF9C7C65FFAD805EFFB78557FFBA8553FFB58454FFAE8156FFA57F5CFFA6805DFFAF8257FFB8885EFFA87C57FF9F7A5EFF987A67FFBAA79AFFFFF1EEFFFFF6F8FFFDF6F9FFF8F1F4FFFFF5F5FFFFFDF7FFFFF2E6FFEDD9C8FFA18973FF9B7C65FF9C7761FFB79480FFFEE7D7FFFFF7EAFFF8FBF2FFEEF5F2FFF1F6F7FFF6F3F5FFFFF4F6FFFFEEEDFFC19D93FFAB7F6EFFA3765BFFA97F5AFFAC8559FFAB865AFFA98360FFA57B58FFB3865BFFB78557FFB48051FFB5855BFFA98262FF977C68FFFFF7F3FFF9F5FBFFF3F4FEFFF6F5FEFFFAF1EEFFFFF1E2FF604328FF614729FFB39D84FFFFF5E9FFFAF5F4FFF1F0F9FFF6F5FFFFF8EEF4FFB4A19AFFA07E67FFAF825DFFBB8556FFBC8552FFB58454FFAC8057FFA47F5DFFA47F5DFFB3865BFFAA7A50FFB38966FF99785EFFA58C7CFFEDDDD6FFFFFBFCFFF5F1F7FFF9F6FFFFFEFAFFFFFAF0F0FFFFF9F1FFFFF1E0FFAA9078FF9B7B5EFFAC8666FFAC7D5EFFA97D60FFC7A891FFFFF9E7FFF8F7EDFFEFF6F3FFEEF5F8FFF5F7FFFFFFF4FCFFFFF1F5FFFFDBD7FFB28679FFAA7E66FFA97F5CFFA07B4FFFAD8A5EFFA78260FFA67D5CFFB08259FFB68456FFB58250FFB58458FFAA8160FF927762FFFFF5EFFFF8F4F9FFF2F2FEFFF6F5FEFFFBF2EFFFFFF8E9FF62452AFF624929FFB29C83FFFFF4E8FFFAF5F4FFF0EFF8FFF8F7FFFFF4EBEEFFBDA8A0FFA48068FFB1825CFFB98452FFBB8451FFB58454FFAD8359FFA48062FFA3805FFFB2855AFFAC7C52FFAE8663FFAE8F76FFDAC4B8FFFFFAF6FFF6F0F5FFF2F1FBFFEDEDF9FFF9F6FFFFFBF3F3FFF4E5DCFFDAC2AEFF937558FFA17B58FFAE8259FFB17A53FFB6825EFF99775AFFE8D5C0FFF7F5EAFFE9F0EDFFF4FCFFFFE9EBF6FFFEF2FEFFFFE9F1FFFFF7F7FFE3B8AFFFBB8F78FFA87E5BFFA58054FFAA875BFFA27F5EFFA88161FFAE8057FFB58355FFB98452FFB28153FFA9815EFF997C67FFFFF3EDFFF7F3F8FFEFEFFBFFF4F3FCFFFCF3F0FFFFF4E5FF64482AFF64482AFFB09A81FFFFF4E8FFFAF5F4FFEFEEF8FFF9F8FFFFF3EAEDFFC6B3ABFFA48068FFB0815BFFB78250FFBA844FFFB68555FFAF855BFFA48264FFA58261FFAD8054FFBB8E62FF9B7654FFC6AB96FFFFFBF4FFFFF7FAFFECEBF5FFF4F4FFFFF0EFF9FFFCF7F9FFFFFEF6FFDFCBBAFF9B7E63FFAE8A66FFA98157FFB48559FFC28B60FFB17D58FFA68060FFA9927CFFEBE3D6FFFCFDF9FFF2F6FBFFEFF0FAFFF9EFFBFFFFEDF6FFFFEFF0FFFFF5EDFFC39C86FFA17A5AFFB48E64FF" & _
      "A48156FFA37D5DFFAA8363FFAC7E55FFB38153FFB98654FFB07F51FFA8805DFF9E816CFFFFF5EFFFFCF6FBFFF1F2FCFFF7F7FDFFFFF8F5FFFFF3E3FF674D2FFF614328FFAF9781FFFFFFF7FFEDE7E8FFF7F8FFFFF5F5FFFFF9F3F8FFB8A69FFF9F8166FFAF855BFFB78551FFB17D48FFB78855FFB3895EFF9B7857FFA5805EFFB18354FFB38758FFBC9A7CFFFFEFDEFFFFF8F9FFEDEEF8FFECEFFDFFEBEBF7FFF3ECEFFFFFF7EEFFFEE6D0FFAC8D6EFFA37E58FFAF855AFFAC8255FFB18458FFB18157FFAB7E58FFA17B5BFF9F836BFFBDAD9DFFF4EAE3FFFFFEFFFFF0E9F0FFFDF5FCFFFFF7FBFFFEEAE9FFFFF3E9FFFFF0DDFFAF8E74FF9B7654FFAC8663FFA98361FFAA805DFFB08259FFB07F51FFBE8C5EFFAC7C52FFAA8363FF907561FFFFF6F0FFFBF6F8FFF3F2FBFFF2F1F5FFFDF7F2FFFFFCECFF584226FF65472CFFB59A85FFFFF7EEFFF5EFF0FFF5F6FFFFF1F3FEFFF9F3F8FFB7A7A0FFA08269FFA07A50FFB78654FFBA8853FFB38451FFAD8358FFA17E5CFFA98664FFB2885DFFA67F58FFFCE2CAFFFFF5ECFFFBF9FFFFF6F9FFFFE6E9F7FFF7F6FFFFFFF8F4FFFFFFF1FFB89A7FFFAB8763FFA5805AFFAE8760FFA7815EFFA6805DFFA8825FFFA88361FF9E7D63FF907561FF9A877AFFCDBFB9FFF6EEEFFFFDF7FCFFFCF5FCFFF9F2F7FFFFF5F5FFFFFDF6FFFFF0E1FFE9CEB9FF9D7F64FFA37F61FFA67F5FFFAA805DFFBC8E65FFA8774BFFB38256FFB1855CFFA58163FF947B67FFFFF7F1FFFDF6F9FFF6F4FAFFF3F2F4FFFDF7F0FFFEF1E1FF5A4529FF67472AFFAC917CFFFFF0E7FFFDF5F6FFF7F6FFFFF0F1FBFFFBF5FAFFC7B7B0FF9E8369FF9C7850FFB88858FFB98955FFAC7E4EFFB0865BFFA78462FF9C7D5EFF997B5EFFDBC1A9FFFFFFF5FFF9F1F1FFF4F3FCFFF1F3FEFFF4F5FFFFF7F2F4FFFFF8F1FFD6BFAFFF997B62FF917356FFD1B499FFD9BFA7FFC5AD99FFD7BFABFFD3B79FFFD8BCA4FFD7BEAAFFC7B4A7FFBCAEA8FFD1C9C9FFF2ECF1FFFCF9FFFFF4F0FBFFF1EEF7FFFBF4F9FFFFF7F7FFFFF4EDFFFFF7EAFFBFA795FF9A7E66FFA68062FFAA805DFFB1835AFFB08056FFB7875DFFA47952FFA38164FFA88E7DFFFFF6F0FFFBF5F6FFF6F5F9FFF6F3F5FFFFF8F1FFEBDDCBFF5D472BFF634326FF92765EFFFFF5EAFFFFF5F5FFF7F6FFFFEFF0FAFFFBF5FAFFE4D7CFFF987E66FFA5815DFFB5895AFFAD7E4BFFAC7E4FFFB68C62FFA3805EFF907259FFAE9A89FFFFFFF7FFF9F1F1FFF3EFF4FFF1F2FCFFEDECF6FFF3EDF2FFFFF8F6FFE8D5C8FF98806CFF967A62FFAE947CFFFFEADAFFFFF6EAFFF1E8E5FFFFFDF9FFFFF3E8FFFFF3E4FFFFF9EEFFFFFBF3FFFCF2F2FFF8F3F5FFF7F4FDFFF1F0FAFFF0F0FCFFF7F6FFFFF1EFF5FFF0EBEDFFFFFDFAFFFEF2ECFFF4E5DCFFAF9888FF9D7B5EFFB38966FFA37650FFB4865DFFB78B62FF99714EFFAD8C72FFB39C8CFFFFF5EFFFF7F1F2FFF5F1F6FFF7F2F3FFFFFAF1FFD1C1B0FF60482CFF634123FF72563EFFFFFBEEFFFCF0EEFFF9F7FDFFEFEEF7FFF8F3F5FFFFF3EDFF957D67FFA68361FFB0865BFFAD7F50FFB18458FFA98157FF9D7856FFAA8F7AFFEEE2DCFFFDF9FEFFEDEAF3FFF6F5FFFFF8F7FFFFF9F5FBFFF0E4E2FFFFF3EAFFB39B89FF9B8169FF967C64FFF8E2D0FFFFF2EAFFF7F2F4FFF9FAFFFFF2F4FFFFFFFCFDFFFFF3EDFFFEF2F0FFFFF7F7FFFBF6F8FFF8F6FCFFF8F5FEFFEFEEF7FFF4F5FFFFF6F7FFFFF5F4FDFFF2F0F6FFFDF8FAFFF8F2F3FFFFFEFEFFDDCCC3FFA38169FFB18764FFAD805AFFA97C56FFAD815CFFA6815FFFA5876EFFC5B1A0FFFFF6F0FFF6F0F1FFF5F2F4FFF9F4F3FFFFFCF2FFB6A592FF62482AFF664426FF61432AFFFDE8D9FFFDF1EDFFFBF5FAFFF1EFF5FFF5F0F2FFFFFCF6FFA48E7CFF9C7D5EFFA78059FFB78C61FFB3895EFF9D744DFFAB8664FFE7CCB7FFFFFCF9FFEFEEF7FFF2F1FBFFF7F4FDFFF7F3F9FFFAF0F0FFFFFFF8FFC4B09FFF967B66FF9F846AFFD5BBA3FFFFFDECFFFFF4F0FFEEEBF4FFECF3FFFFE4EAFDFFF6F4FAFFF5EDEDFFF6EEEEFFF6F0F1FFF1ECEEFFF4EFF1FFFAF6FBFFFAF6FBFFF8F4F9FFF0ECF1FFFFFBFFFFFFFCFFFFECE7E9FFFFFEFFFFF5F0F2FFFFF2ECFFD7B89FFFA37956FFAF835EFFA87E59FFAB8261FFA98769FF856A55FFEDDDCDFFFFF8F4FFF9F4F3FFFBF6F7FFFCF5F2FFFFF8ECFF98836EFF64482AFF684524FF5F4126FFD0B9A9FFFFF7EFFFF9F2F5FFF7F3F9FFF8F3F5FFFFF6F2FFCAB5A6FF997B62FFA27D5BFFB58E67FFA98059FFAC855EFFDDB896FFFFF6DEFFFDEFE9FFFDF8FAFFFDF7FCFFF6EFF2FFFBEFEDFFF9E9E2FFF7E2D3FF8F7662FF9D7F66FFBFA186FFFFFEE6FFFFF0E0FFFFFBF5FFFAF6FBFFEEF1FFFFF1F6FFFFFBF7FCFFFEF6F6FFFFFBFBFFFFFCF9FFFEF5F2FFFFF6F3FFFFFBF7FFFFF6F2FFFFF5F1FFF6EDEAFFFFF9F6FFFFFCF9FFF1E9E9FFFFFBFCFFEFEAEBFFFFFAF2FFFFEED6FFC49978FFAB815EFFAC8362FFAB8769FF9F8067FF8D7563FFFFFAEEFFFFF6F2FFFBF6F5FFFFFAF9FFFDF3ECFFFCEBDEFF765F49FF624526FF684321FF644526FFA9917DFFFFFCF3FFFBF0F2FFFEF8FDFFFFF8FBFFF7EEEBFFEAD8CDFF9A826CFF9B7C5DFFA98561FF98734DFFC9A47EFFFFEAC6FFFFFDE2FFFFF9EAFFFCECE5FFFFFFF9FFFFF2EBFFFFF7ECFFFFF4E5FF99806CFF9C8068FFA9886EFFFFEBCEFFFFFBE2FFFFFBE7FFFFF0E5FFFFF4F0FFF8F2F7FFF7F3F8FFFFF7F7FFFEF4EDFFFFF4EEFFFFF4ECFFFFF3E7FFFFF9ECFFFFFAEDFFFFEFE0FFFFFBECFFFFFCEFFFFFF4E7FF" & _
      "FFF6EAFFFFFFF7FFF4E8E2FFFFFFFBFFFFF5E9FFFFFCE2FFFFDFBEFFB18868FFA07A5CFF9C7B61FF9E836EFFBBA899FFFEF2E8FFFBF2EEFFFAF5F2FFFFFBF8FFF9EEE6FFF1DECFFF60462EFF613F21FF6F4926FF684726FF6D523DFFFFF7EAFFFFF7F5FFF9F2F5FFFFF9FCFFF8F0F0FFFFF0E7FFB69F8FFFAB8D74FF987658FFA6815FFFB38F6BFFC09C78FFC29F7EFFBEA085FFBE9F88FFBC9F8AFFB89D88FFB29782FFAB8E79FFA4856EFF9F8166FFB8987BFFBB997BFFBE9C7FFFBC9E83FFBA9D88FFB59D8BFFB19B8FFFAE9A8FFFAD9C8FFFAD9C8FFFB19D8CFFB39D8BFFB69E88FFB89E86FFBC9F84FFBC9F84FFBC9F84FFBC9F84FFB89E86FFB69E88FFB39D8BFFB19D8CFFAF9C8DFFB59D8BFFBF9A7EFFD4AB8BFF9F795BFFA8876DFF947860FF937D6BFFFDEDE1FFFEF5ECFFF6F0EBFFFFFFFCFFFAF2EBFFFFFBEFFFB7A18FFF654A30FF6A4726FF633C16FF714E2CFF62462EFFDDC8B9FFFFF6F2FFFBF3F4FFFAF3F6FFF8F0F0FFFFF7F1FFD9C8BBFF907862FFA08267FFA48264FFA6815FFFAB8763FFB28D67FFA77E57FFA87E59FFA8805DFFA78161FFA58163FFA17F62FF9F7D60FF9D7B5EFF9D7B5DFFA17D5FFFA57F5FFFA78161FFA68362FFA68264FFA58163FFA07F65FF9A8068FF98806AFF9C8167FF9E8166FFA18263FFA58260FFA8825FFFA8835DFFA8835DFFA8825FFFA58260FFA38261FFA18164FF9E8166FF9C8068FF9F8067FFB1896CFFA98060FFAC876BFF9A7C63FF9B836FFF9D8D7DFFFFF6ECFFFCF6EFFFFEF8F3FFF7F1ECFFFFF4ECFFFFF7EAFF7A624EFF6D4F34FF603B19FF6A411AFF724D2BFF604328FF9E8876FFFFFBF3FFFAF0F0FFF8F1F4FFFCF6F7FFFFFCF8FFF7E8DFFFA68F7FFF9D8169FFA28265FFA3805FFF9E7A56FFA77F55FFB38254FFB48353FFB38256FFAF8158FFAD815CFFAA8160FFA98262FFA98365FFA27C5CFFA37D5DFFA6805EFFAB815CFFAD825BFFB08358FFB18157FFAC8057FFA6815FFFA28062FFA48160FFA6825EFFA9825CFFAB8359FFAE8358FFB08358FFB08357FFAE8358FFAE8259FFAB825BFFA9825CFFA7815EFFA6815FFFA78060FFA37A59FF9B7454FFA68467FF9F856DFF907C6BFFD5C7BBFFFEF6EFFFFDF9F4FFFCF7F4FFFCF3EFFFFFF5EBFFF2DFD0FF573C27FF644225FF714827FF7A512AFF633D1AFF66482BFF6C5440FFF3E4DBFFFAF1EEFFF8F1F4FFFFF9FCFFFFF8F8FFFAEEE8FFE9D6C9FF9B826EFF9A7C61FFA88766FFA5815DFFAB8157FFB98858FFBC8755FFB88455FFB48355FFB18157FFAD805AFFAB815EFFA9805FFFA7815FFFA7815FFFAC825FFFAF845DFFB48559FFB68555FFB98452FFB58355FFAE835CFFA8825FFFAA835DFFAC835CFFAF835AFFB18459FFB38458FFB58456FFB58456FFB58456FFB38458FFB38458FFB18459FFAF835AFFAE835CFFAE825DFFA77D5AFFAB8464FF9C7B61FFA18874FFA19083FFFFF9F0FFFDF8F5FFFAF7F3FFF8F5F1FFFDF5EEFFFFFFF3FFAE9A88FF5E4027FF654123FF744A27FF7A5026FF5C3711FF694A2BFF543C26FFAB9B8FFFFFF8F4FFFAF4F5FFFAF5F7FFF8F1F4FFFDF1EFFFFFFCF3FFC1AA9AFF977B63FF9E7C5EFFAC8864FFAE855EFFAB7E53FFAF7E52FFB18054FFB28155FFB18256FFB18157FFAD805AFFAC805BFFAA805BFFAA805DFFAB815CFFAE815BFFAF8257FFB38254FFB68253FFB38153FFAD805AFFAA805BFFAC805BFFAD805AFFAD8158FFAF8158FFB18157FFB18157FFB18157FFB18256FFB38256FFB38256FFB18256FFB18157FFB18157FFAF8158FFAF835EFFAA8363FF987960FFA48C7AFFE6D7CEFFFFFBF6FFFBF9F8FFF3F4F2FFF9F6F2FFFEF7EEFFF8E8DBFF664E3AFF67462CFF744D2DFF603311FF6D4319FF6C451FFF6A482AFF593F27FF604F42FFF1E6E2FFFAF4F5FFF6F2F7FFF5F0F2FFFFFBFBFFFEEEE7FFFCE7D8FFB0967EFF947556FFA98561FFA9825CFFAA805DFFAB815CFFB0835DFFB3865BFFB5855BFFB68559FFB38359FFB08259FFB0835DFFAF845DFFAF835EFFAF835EFFB0845BFFB2855AFFB68559FFB6845AFFB0835DFFAF835EFFAF835EFFB0835EFFB0835DFFB0835DFFB2835DFFB2835DFFB2835DFFB2845BFFB4835BFFB4845AFFB6845AFFB6845AFFB68559FFB4845AFFA97D58FFA78161FF997B62FFD4BDADFFFFFFF8FFFDF8F5FFEBEBEBFFF6F8F8FFF3F2EEFFFFFFF8FF9E8F7FFF533B25FF6E4B31FF694020FF704220FF6D4217FF764D26FF6C4928FF60442CFF4D3A2DFFA1958FFFEEE8E9FFF9F5FAFFF7F3F8FFFFF9FAFFF8EAE4FFFFFFF2FFE6CBB6FFB49576FFA7835FFFA47E5BFFA17E64FFA27F65FFA68060FFAB815CFFAE8057FFB18054FFB07E50FFAE7D51FFAF7F55FFAB7F56FFAA7E59FFA87E5BFFA87E5BFFA87E59FFAB7F5AFFAB7F5AFFAB7E5CFFAB7E5CFFAB7E5CFFA97F5CFFA97E5DFFA97E5DFFA97E5DFFA97E5DFFAB7E5DFFAB7E5CFFAC7F5AFFAE7F59FFB07F59FFB07F57FFB28056FFB07F57FFA67A55FFB79171FFC8A992FFFFF2E3FFFFFDF6FFFBF9F8FFEAECEDFFF6F8F9FFF3F2EEFFDED7CEFF554534FF5F472FFF6C4A2DFF623918FF7F512FFF74491EFF6E461CFF6B4624FF5D4025FF614B39FF4A3C30FFDED5D1FFFDF7F8FFFCF7F8FFF1EBECFFFFFDF9FFFFF1E8FFFFFAE9FFDCC4AEFF9F8469FF9C7E63FF9D7D66FFA07E66FFA68062FFAB815EFFB1835AFFB68559FFB88658FFB88658FFB48357FFB08259FFAE815BFFAA805DFFA9815EFFAA8160FFAA8160FFAB8261FFAE8160FFAE8160FFAE8160FFAC8160FFAC8160FFAC8160FFAC8160FF" & _
      "AC8160FFAE8160FFAE815FFFAF815FFFAF825DFFB1815DFFB1825CFFB1825CFFAC825FFFA48167FFB79C88FFFFF5E6FFFFF7EEFFFFF7F4FFF0ECEBFFFFFFFEFFF3F0ECFFFFF9F2FF7E7163FF59442FFF604328FF5F3B1DFF7E5431FF653813FF72481BFF6B4116FF704C24FF654522FF62472DFF56412CFF79695CFFFFF5EDFFFFF8F4FFFCF5F2FFFBF3F3FFF9F2EFFFFDF4F0FFFFFAF3FFBFB4ACFF988578FF9E7F66FFA88161FFAF8463FFB1845FFFAF8158FFB4845AFFB58458FFAD7C50FFB48357FFB28258FFAF8158FFAD805AFFAE825DFFAD8360FFA9805FFFA57C5BFFAA7C5DFFAF8261FFB28564FFB18361FFAE815CFFAF7F5BFFB0815BFFB0815BFFAF805AFFAE7F59FFAE815BFFB0845FFFAE825DFFA97F5CFFA77F5CFFA08267FFA4948EFFEDE4E7FFFFFAFDFFFAF4F5FFEDE5E6FFFFF7F4FFFFFFF9FFFFF3E7FFBFAB9AFF6A523CFF54361BFF6D4A29FF68421FFF6C421DFF7B4E28FF7A5023FF6F4619FF704A20FF62401CFF644728FF5B4228FF59442FFF9F8F7FFFFFF7EDFFFFF6F2FFFFFCF9FFF9F4F3FFF9F4F5FFEAE7E9FFFFFEFFFFC5B9B3FFA2866EFFA88161FF9D7453FFA27855FFAF835EFFA77A54FFAA7C53FFC4946AFFB28258FFB38359FFB38359FFAD7F56FFA87B55FFA97E57FFAF835EFFB48765FFB18361FFAE805EFFA97C57FFA77753FFAB7A54FFB07F59FFB5845CFFB6885FFFAF805AFFAB7E58FFAC825DFFAD8764FFA68060FF9D795BFFA68466FFAD9583FFFBF4F7FFF9F9FFFFECEBF5FFF2EEF4FFFFFEFFFFFFFFFBFFFEECE1FFEAD3C3FF785B46FF57391EFF623F1EFF77512EFF6C451FFF6A411AFF754B21FF754B20FF6C4519FF724B24FF65411DFF664726FF674A2FFF4E3620FF594533FFCAB9ACFFFCF0E6FFFAF0E9FFFFFCF9FFEFEAE9FFFFFDFEFFF8F5F7FFFFFAF6FFE2CBBBFFB89982FFA4826AFFA88669FFA47E60FFA6805EFFAE8461FFA1764FFFAC8057FFAE8156FFB28258FFB6865CFFB6895EFFB4875CFFAE8156FFA97B52FFB78660FFB5845EFFB5845CFFB7865EFFB8875FFFB4835BFFAA7B55FFA2754FFFAA805BFFA27C5AFFA3805FFFA28265FF96785FFF9D8169FFD5BAA5FFFFFBEEFFFFFCFFFFE5E2EBFFFCF8FEFFEFE8EBFFFFF8F6FFFEEEE7FFFEEBDEFF7E6654FF583C24FF5D3D20FF6B4827FF704A27FF663F19FF694019FF744A20FF694319FF68411AFF734E28FF694521FF654220FF6D4E2FFF614429FF5A4028FF553F2DFFEBD8C9FFFFF6EAFFF9EEE6FFFFF9F5FFE9E4E3FFFFFEFFFFF2EBE8FFFFF9F0FFFCE7D8FFBEA595FF927763FF9F836BFFA6886DFFA07C5EFFA88260FFAE8761FFAD825BFFAA7E55FFAA7D52FFA97C51FFA97C50FFAD8054FFB38359FFAF7F55FFAC7B53FFAB7B51FFAD7F56FFB1835AFFB0835DFFAF835EFFAC8461FFAB8565FFAC8C6FFF9C7E65FF8B735DFFAD9785FFECD9CAFFFFFCEFFFFFF5EDFFF1E9EAFFFEF8FDFFFFFEFFFFFFF8F6FFFBEDE7FFFFFCF1FF725B4BFF5C432FFF674930FF6C4C2FFF6A4726FF66401EFF6B4320FF714722FF704720FF6C4721FF66411BFF6F4B27FF6B4723FF623E1AFF684523FF684726FF634528FF4E3319FF745C46FFE8D4C3FFFFFAEEFFFFFFF7FFFDF4F1FFECE7E6FFFFFCFBFFF8EFECFFFFF4EEFFFFFDF6FFE7D7CBFFA18C7DFF8F7765FF9F836BFF997B60FF9F7B5DFFA88260FFB28B65FFB78C65FFAE845AFFA87D52FFAE8358FFBB8E63FFB08358FFAE8358FFB1855CFFB48A60FFAF8560FFA77F5CFFA27C5CFFA17F62FFA3856CFF876F59FF998574FFDBCABDFFFFF6ECFFFAF0E9FFF3EAE7FFFFF8F5FFFFFBFBFFF9EDEBFFFEEFECFFFFF8F1FFFFF2E7FF9B8475FF533A26FF674B33FF624429FF664426FF653F1FFF6A4422FF79512EFF754E28FF69421CFF6F4C2AFF63401EFF66421EFF6C4824FF6B4620FF6B4620FF6C4721FF684321FF6F4D2FFF583B20FF624A34FFE1CDBCFFFFFEF2FFFFFFF8FFF6EDEAFFFFFEFFFFFFFAFCFFFFFBFCFFF6EEEEFFFEF2F0FFFFFDF7FFE5D5C9FFAB9687FF99806CFF9F836BFF987A5FFF987658FFA17E5CFFA98561FFA7825CFFA37C56FFA07953FFAA835DFFA5805AFFA47E5BFFA47F5DFF9F7C5BFF97775AFF997B62FF9E836EFFA28C7AFFCABAAAFFF2E3DAFFFBF1EAFFF9F2EFFFFDF8F9FFFDFAFCFFFAF5F6FFFFF3EFFFFFEFE8FFFFEDE5FFFDE7DBFF8E7767FF543B27FF72563EFF5B3D22FF634123FF654221FF66411FFF6D4725FF754D2AFF6C4421FF68401DFF684726FF644322FF623F1DFF6D4822FF744D26FF71491FFF70481EFF6F461FFF6E4825FF664322FF62452AFF58402AFFC1AE9FFFFEEFE6FFFFFCF8FFF3EBEBFFF5F1F6FFEBE9EFFFFAF6FBFFFFFEFFFFF8F0F0FFF7ECE8FFFFF2EAFFFFEFE3FFD3C0B1FFB8A290FF9C856FFF987E66FF9E8369FF9F8469FFA18469FFA28668FFA5886DFF9A7D62FF93755CFF987C64FFA48974FFB59D89FFCDB9A8FFE1D1C1FFFFF7EBFFFFF9F1FFFFF8F4FFF9F4F3FFF5F2F4FFF5F4F8FFF0F0F6FFF1ECEEFFFFF8EFFFFFEEDFFFFFF8E8FF816756FF604530FF664730FF523419FF5F3D1FFF6C4928FF6C4725FF6C4624FF6B4522FF68421FFF66401DFF6B4522FF5F3F22FF6B492BFF674422FF6C4721FF6F4821FF6B4117FF70451AFF74491EFF663D16FF77512EFF5F3D1FFF64492FFF5B4533FFA08F82FFFFF8EFFFFFF6F2FFF5F0F2FFFCFAFFFFF9F5FAFFEEEBEDFFF9F2F5FFFFFEFEFFFFFBF8FFFCF2EBFFFCF1E9FFFFF4EAFFFFF6EAFFFBEBDEFFDECEBEFFC0AE9DFFB5A392FFBBA998FFB9A796FFBEAB9CFFD0C0B0FF" & _
      "EEDDD0FFFFF1E4FFFFF4E8FFFFF4EAFFFFF8EFFFFFF6F2FFF9F2EFFFF7F2F1FFF7F5F5FFFAF6FBFFF7F6FAFFF4F4FAFFFCF7F6FFFFF7EAFFE7CCB7FF634631FF62432CFF5D3E25FF5E3E21FF765436FF6B4827FF684321FF684220FF6B4522FF6C4623FF6A4421FF6F4926FF704A28FF624429FF644427FF684524FF6B4522FF6F461FFF71471CFF74471BFF74471BFF6F4419FF6E451EFF6F4A28FF6C4C2FFF573D25FF503A28FF887566FFD8C9C0FFFEF5F2FFFAF4F5FFFAF4F5FFF9F3F4FFF9F3F4FFFAF4F5FFFAF4F5FFFAF5F4FFF9F1F1FFFDF5F5FFFFFAF7FFFFF8F5FFFDF4F1FFFCF3EFFFFFF6F2FFFFFBF7FFFFF9F4FFF8F1EEFFF5EEEBFFFCF5F2FFFFFBF8FFFFFAF7FFFBF6F5FFF8F3F2FFFFFCFBFFF8F4F3FFF6F1F2FFF6F1F2FFF5F0F1FFFCF7F8FFFBF6F7FFF6EAE4FFA48C7AFF75563DFF57391EFF624225FF6A482AFF664322FF66411FFF694321FF6B4522FF6B4522FF6B4522FF6B4522FF6A4523FF6A4523FF6A4424FF644329FF644427FF684524FF6B4522FF6F461FFF71471DFF74471BFF74471BFF784D22FF71471DFF68411BFF684524FF65472CFF563924FF503723FF5C4738FFA89891FFE5D9D3FFFFFFFBFFFEF3EFFFF3EAE7FFFFFCFCFFFFFEFFFFF3EDEEFFFFFBFDFFF5F0F2FFECE9EBFFF1EDF2FFFCF8FDFFFFFCFFFFF6F2F7FFEAE6EBFFF2F1F5FFF9FBFCFFFDFEFFFFF9F8FAFFEDECEEFFE9E8EAFFF4F1F3FFFEFCFCFFEDE8E9FFFFFEFDFFFFFEFEFFFEF7F4FFFEF5F1FFFDF3ECFFBDB1ABFF675649FF6D5139FF634124FF603E20FF694625FF694323FF694321FF6D4724FF714926FF6D4522FF6D4522FF6B4522FF6B4522FF6A4523FF6A4523FF684524FF664427FF664427FF684524FF6B4523FF6D4620FF71461FFF72461DFF72471CFF6C4017FF72481EFF6C451FFF6A4523FF714D2FFF6D4C32FF604229FF583D28FF543D2DFF645142FFA69588FFF7E7DBFFFFFFF8FFF6EAE4FFF3E8E4FFFFFEFEFFFDF7F8FFFFFAFCFFFEFAFFFFF9F5FBFFF3EFF5FFF1EFF5FFF8F6FCFFFDFDFFFFEEF1F6FFF0F3F7FFF0F3F8FFF4F5F9FFFAFBFFFFFFFEFFFFF7F4F6FFEAE5E6FFFFFCF9FFF3E8E4FFF9EDE7FFFFF4EBFFD1C1B4FF857263FF5E4A39FF614834FF57361CFF63401FFF6E4B2AFF6E4927FF67411FFF6D4522FF734B28FF6C451FFF6D4620FF6D4620FF6B4522FF6B4522FF6A4523FF6A4424FF684426FF684327FF684426FF6A4424FF6B4523FF6D4522FF6F4520FF6F461FFF71461FFF6A411AFF774E27FF734C26FF653F1CFF653F1DFF674423FF6B4729FF6E4E31FF5F4128FF664C34FF654D37FF69513FFF927D6EFFD5C3B8FFFFF0E7FFFFF7F1FFF9EDEBFFF6ECECFFF4ECEDFFF9F1F2FFFCF5F8FFFDF6F9FFF9F2F5FFF3EEF0FFEFEDEDFFF5F5F5FFF6F4F4FFECEAEAFFEDE9E8FFF9F4F3FFFFFBF8FFFFF9F5FFFFFAF2FFF2E3DAFFBDAA9DFF705C4BFF482F1BFF553B23FF64492FFF5B3D22FF6A4628FF6D4826FF6F4A28FF6C4623FF69411EFF714926FF744A25FF673D18FF6D4620FF6D4620FF6B4522FF6B4522FF6A4424FF6A4424FF684426FF6A4426FF6A4424FF6A4424FF6A4424FF6B4523FF6B4523FF6B4522FF6B4522FF6F4822FF714A24FF6B4320FF69411EFF6F4724FF6C4421FF643C19FF623C19FF6A4424FF573315FF543215FF5F4027FF62462EFF5E4531FF745B4BFF927C70FFD0BCB1FFEBD8D0FFFFF9F0FFFFFFF8FFFFF4EFFFFDEAE5FFFFEFE8FFFFF9F2FFFFFEF4FFFFFDF3FFFFF9EFFFFFF9EFFFFFFEF4FFFFF2E6FFD6C6BAFFA9988BFF7E695AFF5C4634FF543924FF654A30FF705033FF6C4A2CFF6F4929FF714C2AFF704B29FF674220FF67411FFF694320FF69411EFF6E4721FF734924FF6D431EFF6F4520FF6D4620FF6B4522FF6B4522FF6A4424FF6A4424FF684426FF6B4424FF6A4424FF6A4424FF6A4424FF6A4424FF684524FF684524FF6A4424FF66411FFF684220FF69411EFF6F4724FF7C522DFF794E27FF72461DFF754920FF774B26FF754B28FF754C2BFF704A2AFF643F23FF58371DFF5C3D26FF664934FF553A26FF553B2AFF624837FF816756FFA58B7BFFBBA190FFBBA190FFB49B87FFA7927DFFAC9984FFA6917CFF8A7560FF6B5641FF5B4631FF5A422EFF5B432DFF5D432BFF5D3F26FF654528FF6A4628FF643E1CFF643D17FF70451EFF704621FF6C4623FF643F1DFF6B4522FF714B28FF6B441EFF67401AFF6F4520FF734924FF6F4520FF6D4620FF6B4522FF6B4522FF6A4424FF6A4424FF684426FF6D4423FF6B4523FF6A4424FF6A4424FF684426FF664427FF664427FF664427FF644022FF6E4828FF6C4624FF6C421DFF6E431CFF6E4116FF704115FF794A1EFF6B3D14FF6D401AFF6D411CFF6C421FFF6F4625FF734C2CFF6F4B2DFF674528FF714E34FF6D4A30FF68452BFF623F25FF623D21FF623D21FF654024FF684426FF6C4D2CFF684C2AFF664726FF634627FF644728FF65472AFF644629FF654528FF6A482AFF6B4827FF6F4A28FF704825FF734821FF7B4F26FF7B4E23FF683C13FF704825FF684321FF6F4927FF724C29FF6C451FFF68411BFF6F4520FF6F4520FF6D4620FF6D4620FF6B4522FF6B4522FF6A4424FF6A4424FF684426FF"
  Return _ReadImageFromText($tBuffer, $IMAGE, $iWidth, $iHeight)
EndFunc   ;==>_ConvertStringToImage

 

Image From Text.au3

Link to comment
Share on other sites

  • 1 year later...
1 hour ago, supersonic said:

Could the function  _WriteImageToText()  be extended so that a bitmap is first converted to PNG and then saved?

The function saves the content of a GDI+ bitmap.  What do you mean by converted to PNG ?

Link to comment
Share on other sites

Currently I have something like this:

...

$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($aDllCall[0])
$hBitmapResized = _GDIPlus_ImageResize($hBitmap, $iResizeWidth, $iResizeHeight, $GDIP_INTERPOLATIONMODE_NEARESTNEIGHBOR)
_GDIPlus_ImageSaveToFileEx($hBitmapResized, $sPathFile, _GDIPlus_EncodersGetCLSID("PNG"))

...

$hFile = FileOpen($aTest[0], $FO_BINARY)
If ($hFile <> -1) Then
    $sData = FileRead($hFile)
    If (Not @error) Then

    ...

    EndIf
    FileClose($hFile) ; !!!
EndIf

...

I'm looking for something like that:

...

$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($aDllCall[0])
$hBitmapResized = _GDIPlus_ImageResize($hBitmap, $iResizeWidth, $iResizeHeight, $GDIP_INTERPOLATIONMODE_NEARESTNEIGHBOR)

$hPNG = _GDIPlus_ConvertBitmapToPNG($hBitmapResized)
$sPNG = _GDIPlus_PNGToString($hPNG)

...

... to avoid creating/reading a file.

 

Link to comment
Share on other sites

Like I said, the object that I am using is a handle to GDI+ bitmap.  Not sure that it would a difference inside the bitmap between any type of encoding.  Anyway, if there is a difference, I do not know how to make it effective.

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...