Binary von Bildern erstellen, aus Textdatei auslesen und in GUI packen

  • Hallo,

    ich würde gerne
    1. einmal wissen, wie man eine Binary von einem Bild erstellt und diese beispielsweise in eine Textdatei schreibt
    2. Wie man diese Textdatei dann wieder ausliest und die Binary in die GUI als Bild packt.

    Ich habe hier mal ein Versuch gestartet, aber funzt nicht :

    1. Versuch Binary auszulesen und zu laden ( 1 Bild ist in GUI , 2 Bild in Txt als Binary

    Spoiler anzeigen
    [autoit]


    ;coded by UEZ 2011
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <Memory.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $IMAGE_BITMAP = 0
    Global Const $STM_SETIMAGE = 0x0172
    Global $msg
    Global Const $hGUI = GUICreate("Test", 600, 250)
    Global Const $idLogo = GUICtrlCreatePic("", 215, 20, 169, 68)
    Global Const $idButton = GUICtrlCreateButton("", 266, 150, 78 , 81, $BS_BITMAP)
    Global Const $hButton = GUICtrlGetHandle($idButton)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $Bmp_Logo = Load_BMP_From_Mem(Logo4_GIF(), True)
    _WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo))
    Global Const $Bmp_Button = Load_BMP_From_Mem(Merlin_GIF(), True)
    _WinAPI_DeleteObject(_SendMessage($hButton, $BM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button))
    _WinAPI_UpdateWindow($hButton)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_DeleteObject($Bmp_Logo)
    _WinAPI_DeleteObject($Bmp_Button)

    [/autoit] [autoit][/autoit] [autoit]

    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case $idLogo
    MsgBox(0, "Information", "Bild wurde geklickt!")
    Case $idButton
    MsgBox(0, "Information", "Button wurde geklickt!")
    Case $GUI_EVENT_CLOSE
    GUIDelete($hGUI)
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
    $Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($Ret[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 2, $Ret[2])
    DllStructSetData($tBIHDR, 3, $Ret[3])
    DllStructSetData($tBIHDR, 4, 1)
    DllStructSetData($tBIHDR, 5, 32)
    DllStructSetData($tBIHDR, 6, 0)
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
    DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
    $hResult = $hResult[0]
    Else
    $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    Return $hResult
    EndFunc ;==>_GDIPlus_BitmapCreateDIBFromBitmap

    [/autoit] [autoit][/autoit] [autoit]

    Func Logo4_GIF()
    $open = FileOpen("Binary.txt")
    $Read = FileRead($open)
    Local $Logo4_GIF = $Read
    Return Binary($Logo4_GIF)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Merlin_GIF()
    Local _
    $Merlin_GIF = '0x47494638396144004700F70000FFFFFF1831711C357D182D6D1C3982182D691C35791C3986CACACA1831751C3D9614246118316D14286914357D1835791C398A183575204192142D65C2C2C2BE9296142459203D92AEAAAEC69A9AB2B2B6BAB6B6CACACEBEAA41142D7520398A395D9618358614317DA29E9E1028751C3D8A0C2455797979A27D7918316941699ECEA2A23D4955101C4955595961656100041C86828214358E182861B6A23DEBEBEBBEBEBE142D71E7B2B220419EB28E8E10246D2D3959DFA6AA10245D8E8A8EA29641696969CAB241202D49082065C6C6CA0C1C516165556979927D61616186B2183179AAAAAAC6C6C2969296DBDBDF243D718A71712031591C3582DFAEAE8E7D86A2A6A6314579866969AA828214285D20316910246592928E1031860410353D5D92F3F3F328499A14399A14203D3539497D754986868E0C2059A28282E3E3E3081024AE9A3D967171454545355992494D61AE8A8E7175797D869ED7A2A26555554D4D51B69296DBD7D7394969928A4D555D65D7A6AA8A7D39142855CAA6AA203982EBCACE5D6569AE9A359E9E9E715959183161B6C2DF5186C22D4169928A55414965BABABE615971AE9E9E0C18394559755979AAEBE3DF31498A5179A22439694159A6313128A6964D9EAABEDFBABE314982514924081849495565A696396969610C287D453535203571968286717155'
    $Merlin_GIF &= '7171694571A64D5D861C3D92D2BE41514141DBCACAEFB6BA49393D24459A315586394561082471C6B649614D55B6AA5D1C2D59BE969A3D49717D7959614949CAB2AE514139244186E3C6CAF3EFEB756935797965867D55595D4561758AFBBEC23D659A1C357161551CBAAA49413D456D798A7D8282617DA2141C35000C2820283D24418A79753DE3DFDB24395D9692695D6986283965B2B2B23559968A8279FBFBEF8692AEEFD74D516D96C6B6559A8E45353541A69E5D82615D967D79454531D2BE4D92864561869E14244D554D456D6555393D555D61613159A6B286867592B29E8A351C316DF7FBFBFFC6C665757D1C397D555D7DCECACA1C3979182D71BEC2CE4539206D611C866561FFFFFF21F904010000FF002C00000000440047000008FF00FF091C48B0A0C18308132A5CC8B0A1C38710233E74674CA2C58B08C5E4B8900F16C68F1651697C152011C8930E977DD3A6F100CA970BC5C9C92166D92431307316540149C2AB1CDE64EA1CFA2FDA87483968CE01878E684E246A7E591A9369DBBE664E5F669254E357264BD3BAE2819715243C0A3FAA90DA45CF519518562894FDA8A451851E3DA8E0C0DBA34D3D25733156A0A32990AFC281FED02115F862333AACE6593A24F550183EB71A5BAC42C7579843785A1D7A52435306249A1F12BB1567452B568134E10864184706478C5333248645C70A3E545A151BDE8A'
    $Merlin_GIF &= '0F9F0C59C645D2BD70CE381D192A00C7419DCA0AE851A200669E905B1B1D59A264FFD171A7C29D3869B0544893663BF7834AD2E878A7AE1096FB5892D4D185FCC77B8555E8E0883AAEF0B2CA81AE8812C31F59CCF15F4255E013060241ACE2CA856E7451430DBBA0F6E0418CFC5243183570D0055C4F90D855261F1AC44D586AE0F1C4346AA8F1C41378C818A3832D0E840D1E1C144101214EFC10430C4E60C0880D08E063458F0229C10436D830614A21B75041051F59D47186154C6060857B1FCE51A413419CB0CB1F155470CB1F8EB473C20F3F10D2548F679C70423B31E0C301051B6CC008051CD810449A319C01A529EDB8C00C0708441A24A44D3212840B413003252EE198B2411191861AAA9056B4C303253D9E3204343130C108A8A246FF4A81065604F185212DBA13CB258F04E1043636C03A2A234CFCA0CC1A5FE4F3E03DB598334B1F6EC44008B0C2526003064E9832C4140494100D18DCF522432DDD74534D19A074C1C4061414E1AE0DD88C10831B054860EF0507BC919A0AD1C880CA37D598730509653033EDA0D6128BE6B6537C7081BD074CD258360294708135937821483B32D8F282BA1BD8400123D8101283324B8883CB14164B700104F69C52960A0F5C60732A1008E0413E071C50C60907DBB001B62E4C708F399E784080C33643207156BD9470EF070404208F008094F0801D203342EB093CC8608A'
    $Merlin_GIF &= '397AA4B0440810A4F28A045364E3943153D82B412A5E3CD04002F6007240098604FF31ED06D83861C703105C318B10476CB1C726D5D4A3C0058038958FD46B07014A0A2CE0220001807C00010F3160808D152FC853C20121E4A20A382C60924C300AACDDF650F55CA1B602F5D4D2411FEB94620FE77B2F01C70818FCC043CF3D8B20CCEE8360E2F0BDBDE8D40C2EA9DC1B0D208B00B345289BEBBD770A273001C7143D0302880022E4314C1F1D4002814F1240103D4C9BBC7F2F014B7051C60D09189037F221488420187000F3018200F610C0120AE086580822040FB3D71440F01228340010AF78C5053E20007DF8410AFA08C0037EE73DADF9E0000448E10113688014A4C30709C89A4F2E20002D80EB24D780C11A5A6080541CC00033184201FF18C0800808200421F0DE01A7600F6EA590850C68413A182000089460028F58C31A6E884318E8900706F0C0AA0650800124E00182B84212CD470001B8F1776D34C00306E087474CE0015080C61A74C8459424E20BCEE045387CD0023F04A000050880084C910C35AED08D6E4CA1000C60802D68E11146B0052F44B10632F4112588384521508002657CA100FA2840031409095528220492A42424DD28823DB8800B8F20C328DB0087ACB4860A7480430306708D44DC2014B998C52C1E294B01E4037DA1D0830B88900E72E0E0388A220A12B290811564200EF220A6191251'
    $Merlin_GIF &= '8A0ECC2219BF73A32C45100C458002141D580711E0E0CD1554801CA81A0A12DE91FF810CD4E116A318C004A4C1860E744008C110813A2949497B2842151DA0011086D18834446105B7408153908002D69021035018400358400321084118906428431F600045449406D2684414D8B18238A0603943B1863FB2F38524E0A2003358C0223CE10903A4F4014865E812842104894A610FEC18421AFC5108A750A20E3B8506341800542D34C0032260E94A2380D40788E00542D0831ED8C0834E7CA10EE4488237B2428946D022099C40A416B45080049075AC11202B4BDBF182048C420F7048072D0AA18BB9CEC50EC0E0C43576E003BE06E0AF728C4002361BD80878C00309F040256231047570E21E8808CC30E2818C3E9881053E48A45FCBBAD900FF6CF6B6B5D5470386800C7E78642E8860413FFAF00970B821B60CB02D529790800038D7B9B7752E5787C08974FC762E9740C627CEB10534F035B99BBD022E3C10007DDCE0B9CF256201A4A08E4E5C372B60E0871DCC30081E547688B6F5401E30510912546211E7452F03C8A88572E432302A4807170A60063BA0C102654CAE7E69908B2300C11301962E570B5060673C2230C630C1041A90026A5800C22918803E46E10920B08106A5B80111931B00F572D80816480788455C8009CCC0027C2D803C4A01840EB0E1C87990F18C67ACD774580057733184052640E519F821'
    $Merlin_GIF &= 'C80CA8C41ECC70641A80A312FA604098990CD47418410B08DEEB0C66A0852B237269C0B258041BCE710433B840C9649E409BAFA002CDC0020A50D0420BA6FCE61BC0810D89D8C10EE4B1641B4FC0022A482D734E01060BC416913758443B1AA0CA05AC79060D6840507D9082147C48056F28B53C183D80141862132088B5AC63FD069941E9D6B84E484000003B'
    Return Binary($Merlin_GIF)
    EndFunc

    [/autoit]

    2. Textdatei mit Binary :

    Spoiler anzeigen
    [autoit]

    0x474946383961A9004400F700009292924040406A6A6BE1E1E1CDD8E35689B66499C6C3CDD8BFBFBFEDEDED3A648DDBE3ECA5BED69AB1C75A94CC33333579A3C8C6C6C699BDE0AAAAAAD0DBE5E6ECF1A7C2DD949DA67F7F7F848484F1F1F1B0B0B0B8C0C9E8E8E8FCFCFCA3C3E2212125B4B8C74C5863D5D5D5F4F4F45B687471727246719A515C684C4C8D00004236367C989898A0A1A1A4A4A49D9D9DCECECE8B99A55B5B5B6795B9B9B9B93647578BB4DD677684C8C8C800007B92ACC5606061A5ADB54365868D8D8D9ABBDB5252525783ABD9D9D97B8894C1C1C12A4764548EC757799979818BE4E4E499A2AE00006A000024010134D1D1D192B2D1707B85ADADAD416C96C7D2DC83ACD4A9B0BBB6B6B6000054E6E6E623237994B9DE7CA9D3606C78838C94ABC9E6DCDCDC49494A7DACD9000073FAFAFA65717D4D83BA9BADBE87919B56636EA8C6E343495627384A8AACCD3A5269749AB972A4D38989892A2A2ED4DEE727415B4B7DACF6F6F6CAD5E0F8F8F80000128787A74B79A2111111233C54EBF0F493A2B0BBC5CF9898B9181B26527DA6EAEAEA669DD06187A8C3C4D099B5D293B6D834537118187C344B616DA2D4333A4344515D9AA7B3DFDFDF8EA3B8797979788CA09DC0E2889EB48EB0D247617AA3B9CE0000609EA9B5385E8435597DB3B3B37691AB5B91BE9EBAD585B1DBD6E0E9AEBAC41B2434ABB6C167678981A4C26B92B00707071010317F868D90979FD0D2DB405C783C5E7E729EC44679AC3D5A751F34496DA0CC1C1C69B1CCE850719185AACD9FB6CB4374A233404DE0E7EE5959847375769599A1666769A1B4C6B0B3B52424562F51730B0B7D7A7AA724303B3154770D0D7693A7B9BBBBBC707981487DB1A7A7A781A7C93D566EAECAE70909648EA8C179A6D00C0C4E1414454F83AFFEFEFEEEF3F6F0F4F7B1B6BAB7B7B7A0BFDDA9A9C3C4C4C41019227AA1BFA1A7AC628FB34D6C8943437445457FCBCBCB2E4D6BA1A5A8ABABAB7C7C7D9A9A9B5089C1E3E9EF3B3B5FE8E8ED6B6B9F77779075A7D678A9D787B0D669839B90B8DEE9E9E9D9E1E9D9D9E110106B0E0E28000000FFFFFF00008021F90400000000002C00000000A90044000008FF00FF091C48B0A0C18308132A5CC8B0A1C38710234A9C48B1A2C58B18336ADCC8B1A3C78F20438A1C49B2A4C99328538ECC92224F1E532BF6E55049B3A6C71521FCE9F4A0E10B915E326D0A1D2AD1984E7FD8EA9020A101DF8816C3C4CC244A9564B22C2B56982BB7228BA264530DE6D9A96190D9B3589E460D5BB56D4645E6F2188257A76E1D0D09060D88F0AB5716B00353E8AC93B785A475EBE0981D80234335316E23572CB6025082A3FE3C8CA9BB5429DE0123D4F5AA95A3183C7F2406E11B14E001302001F0C98664454D26B692732F3467E8A80712793B081F3E1C5FDE244288E4019439816C7C6004747821038BF024E724595BA2BB7BC22C397502FFC7475C3896F3E8D377B04E82307104113A6400323CC90816A46E7BDF3F301E369D4D61914412907CC3822F2838A2A0083B20E1020C034698846C024A9884000F5871DE802338F3C01590F1D75D32DE88874F84060A20020A687071C38B379081060A22F8E2821316E698040B0F0010E100424CD0880A218A289922ADE8944007032E83810868DC30440C7E286386190D5CF9C80593DC80C60E2C40A8230D3424E1830C03A4095A0B0F1069E491FAF873073E699EE3030A5C4CE90796C1E482C99F98E4124C968FF83144093BBC20849A6A060046121880A126247692E2E69B6D21895A12696E000C1A7A36100C260C946AAAA9810673A51243A0B14E048C0EFF00061000C8000624690A818000AA5CC11DA655E544028190B4800219675462869FA55AE0AC05693C8B6A2E84C6C00530CB40A22D24EB082089091968FB050C2D04D0C4153389A1C2BAECB67BA96EEABAABC2152119830D09037CF1450B22901143240DE4020A03DD3C9BC6C1083BDB0D03A0506B86327E9450020DFA566CF1174E74024C202A64F28F18206020F2C8246300C2AF92815CB2C83BA8F0D10A1AE0ABAFB125FCDBC0210377F3C107087B114D345E1CFC8105DD7403CA210DE8A04C0C9708B0CCC5FA0A014327BEC471AE54990480D9D63A81A1026E132D91C9D864A34C51D65CFBA30E1EE992ED3645C518320616420489023493008C73D11FE8FFFC81175E58306A1AD1A4B173DF3F1CDDC034914CD2860944D45DF7084E7CE3820056ABB0C44C2A6090F6515FC8D004D8115DF14000A8A7FEA145686F3D40067888B10408A9D7DEC444BDD4318810232060C2223744A2C32187FCD00D25C8EF9C8B12EA188280386658B03325DD48F003224F285D09396DC031C2F7239CB341066080D084E65335E1C3E7A8E1000C134552C404025CD3C07645AD1FA5C1AE782CD139D71EE807E914528C566800129483431B2EE1091D3C01113F90800491478948B0A2157DC8A03B42E08743204F823FD0C2212CC1387B40030D2E001F02E0400A7ECCEB365399DF51B041C3FF604303D989DD456488993AB040870611C315FFD8E5AB83E42F33F8E0860062F7BFAD9DA31F666B480A06619F117402056D384225D8F0402D684182129CC62AF2D1876C68431B7DC04229620046097811119660C3293CD18336F822024E70C23224E1C24C4885207880816FEE70070FFCA70E4E70011405228626F4E39190EC47131A1949484E92873AC1C600D881077411E40A4C00011046B68307F4E35DFF38A20792B844FF790E331DC0413F4004912A2440084E804106167189429C820D96B8873085A9857B0CE10F1528E319B35101399CC113C51CA60D2C818B3992C31522B8911388000052D0B220FDE86102347087FFDC61042E4885C7FED1C4AD9DF295EEDC43000499C9DFE000757B0851131E40FF3FAE2500037B70994054994413E0810901680166789200D49DCC2159C0552EAD80824490A3101060433D6CC0D17BD8E01EF6B8C0022A90CC0CF6A1020BF80617DCC0D196D60317CF98C12D7AB0086644000638880210BE3990D9F946031DD8C01874728720C541A0ED3C0A0C24094FD0F5436BEC234123E8D5841DB04F279078C0ED5209D59D14140FE1641F364C30BA86F402393080010B6AE08A1314001654A84728E63A574F904114BCE0853B484A5277F082024AE00215E81A0A2A6C0102E338420F6481820DC0E01C5630812AA2983F0F24001251B8834EC630804E988B734DF5C7085EC0D4AD8D200A4FE51A367E23844E1C55054058286892A0D9A3FF24600F1E2328370C1A56CCAC165FCB00C2241BA2840138E11CDFF045117A70840218600B61886E742180020E2C80170B58403EF2915DEC8AE200CC388274C3400F6A40A0008290822C16C18273E000013EF0265BAE60D5CDA6050E24D8490782CB04D0628604110040698F42021CB023B548B1611D20B10C00F802042AC003248E72077201A0130318AA9232D05F824616AC3BF94F663A60205F04007E0C49C639BE708E73744204E8E8011D0AF08937CC831E38A6C72D582187EC8A620A7FE0C00128B0DD7C50A0142238023DE6C1E4371800BD279045112441847310E105538D5F3BEFC01801D0209309888024749854000BB8094D35733F40D089248CE1FF3F9625C23A1CAA8207602601914D451C06E19B2410610F62EB2A129578D00D38810422462400C01000F3C50F215970C20870F00D76D420115298F1271CC0883774FA165C2080284421870354E10CCC50C21F082007524F81158E3040A71941080740F9154540C304704004670041730461C20628AC2B192C83C0E7801D64CA1CE0018B27023E38251EFA39E24E00010F78389F097C13D41D80D83703B0C25175BB44153021CD1158473FB2AD9F85AC20971158C62AE6908813CCD8080E2004211821885DFC61D43F2E45AB7621021E1C800014900305FE500259E8BBD64628001D4EB0097438C20711F846147630D96053BB0E23B0C2038E3D1827B46091CCFF3E33BAA3BD044C7AA0039DF0762696A03E6E776289BDF5C71820B101E192BB7F65FE46066629864723A4178FFD8615B830074E64BA1DF87680030CB00825249C027618C519D0D00868D4000AA39802C2B15E8A5DF440EA0E30423B265EF11AD894085100862ADAFD0F3C5C463C3098C003E0794E67EC815E2977366AA00D459777C00AC0E8DF3F0CFFE19C8FE10BEA000313AE20E85512DA95FFFD06CB1F620A1C4480081B4041D34F108B321821EAC8E0821D144E010E586B173598F83162F007B153800007880129E89076B5B31D1D73E002111010055ED13DE71A88400B5201CFC747E1A8EC44B7CAFF4BF89653DBF2AD5CFCF5BFEAF82F4C40F2945F28FF2B81BEF2453A441E9426C28B9B2E85D29FDE010AD8C590294081033CE2063558C3098C608057D4C0E004807004C001685004A7670465100BBA50717C800644B00CEA20599EC45533940008C002FDB06D9B950456205C39107868467D2CE772E3C71D24B85BDFB6595FE00CE0577925C86C9B777EDF8000CBB07E4E577A505706A4F00863676A482002C7200BCE956F6D40067F6007014800535076E8707A65D00C52C08068408313200081308195850F568001088644082003F00382E5677DBE5182DA578628D87D2C38792E787930687E0D610A345883A27783650075E8000576407F5977065CD0088B70028210048428086BA009489884077001A42005EDFF908052C009E8C0075CB00C34E00C72F74DEDE40158D009062568613666EA227D82076023B87D84061927C85B98F1786B187E68D84A6F18450A610EDC40269DC0057C800C0A100BCDD00EC8E008F347007FA00450A00635407028B08C342202CCB087B717807F40067C500690C80945E07634C00D2EC0711358733B3108D0860776466030E003E4477DD34760D57782D9B78A29A8732BD882E2E78663F810EFD009DB6805ABC007C4A000BAD00C0A400A1CD0839A307035F007B7178D49487FF4178076500A6A5004CDA00B0A800C73E0085D40039DF00240D02B31446DF7820FEA967388A44898C78EEBF86CA7188B8A078F6A488F2E99922C09870C510B51FF40035660052F3007E8B009BA100BB31003D0B884674006B0A709A2905D4CA95DA4E6900E79007E400AC46091C4C00725D00256B00100602EED1648574561233001203044A41882ECD8925E757967B896AC7814AE28936B298BF7E810C9A0959D60052F56044E3707287070F5370AAC70036AD0064840014C59644F490076300507E098077000A30005A4B00992380BABD0099D300119A055EBF40F3977558FB7016D2286225878A8B844AA888A6FA982AFD88674799AB498103980041BA0999D0005FE5804C71076A5B02547A9207F596A1C509CC5390AA3500A55C0039AF0084AF09C7E700143B00BB38091B330011BB0012D60021CF32B20B3353494361EFF90043400044C609A69899A33D99683D69A3A27042E209783169BE9399B089103E5E00CD9B901CEB00645000E25800432C22209D20835D0054A7001ACF00B17D0A00A7A065D80045040065C500233B28C0A12087CC0078EC00D1B10052C2003FCF04D4794141DC03B5F3008750067834004EF8396CFB69283A796484403EFB87D34E09EE7C40E27068B73998E04860331E810B5F002EA909DDC200273C007A4000E81400A507A0C6B7009B7C0225CC00C48B00A5DD005AB80043750020952038D700CC700A581000EE0400A7C300B5DD00951E00C70602EDF445F0BD50108
    C00E00E00C3090001E80141A8003EB906D69760E2707A333AA9E3B9100446050AAFF386C604604189082F7622756F37334891A307060F68910628001CEA00E51B001BF300BE8C0090A20057A700D055000E36000D44005C084330C6001A572343AF00CB0E00633F00905700D7A609545C007BBC00D51A00E2F6002E6D36E49350623C0A30F00062CA00147510730405A867A073E518AED2892242004E8C81DED742F42C049BD655934B00E10E6A3F309A444C56036C91039F00EECE00C13300134A0A4BC4807EDB069FB360F61F05112F037D1600BB650381F2001F7100A61F006846000B6460752609D6DAA0E2EE00360E04245226C3D748E817050BE8019E734017B60A83CA10101D00FD476A864F8534900029244A709F61B1E204FD33AAE3BFFD00F63039BEC9A19780104FD30790FB10F19D002F47AA4FEB90927700DED6000B2E6AF36A0059420B0046BB0081B0A5BC0B006F009D76091C12A02CB3001CEF00255732E618149A8710E700061D72A04EA7054B1954957658A50D4042FB0137D8A19EBD0047B800531F3660034001BE00B0FD03F960AB31E6048984103FDE510F10A002E50AF9DB00AA40A90D7F00906400B6F1006A1F045526B0B4173B0F76058B490B5BE2A0557B906C2F0A62D0007170B6C03D10FD28A0D099000E49901E0B02E1A88171D0003CE602E7B4018E3C41483D0010930067780170930003430744B70053290045F000958304E840103A2D304020003233000095007FF359692FF0004A94024AD031C83101A89B70420D301FA920483D0BDDD0A0740D410D2E00BECE002CEE00C088006FE88AA957BB95B500F882001510B389FDB0D5A6003610001B4C0AB10CB0973300B67D009CEE0022C2000E6C353A0E90F426005EA30012E0007C080B359830F1A07B6EC800127D604BE408308800056D0023E80013B30015150AF212C008B746E2EF002F85BAF2FA0C24CD07226F0B856800038D0620830013E200060B0074C701B59F3A71B00B6417C6DDCD1044010B6443B01140B0732A0788C3B0C1970BF2EE002CB20027CE0747A1004960B01010C41517B38088C0854C0C03350007A2005B886993470C6EC30672E643659430334BC0332200340FFE0B362F300CEE00B889CC840207999D004329001DF22003210007BD008C080C888BCC88B9409080504897CCA40F000F0D372AE6102BE200992E00B02B00360F000A930793391090FA00E9210C98A0C068A97034D1007B372CABF2CC60E21066AE0032FD0022DE0020880026B8CAA41D0AAB0F00CF5F0403FB0CDD7134710000B335008E9D5C7ABB00CCECC0EF3C10F4D407702E14895F44843FC0FEE5C497840242DB7077190CF7B70504CF0CE3FEB9D11F6CE930719C28C077B0002F91C0720B007EBD6316131CF91946D21920357806DF43C5C0F9103D2B0033EC00ECE0CCDFC9B080AA00782300E33000BA7800B5CF4044F1047CF100E6E300E41A0073DFF808D6BD005E6DC022F00C6193C9BB2B304401DD49BC348421DD47F940334C704E739734557D4401D1639D0D445FD478C34444ACD04E7C3D4B8F1D353CD1651EDD4549DD1D520001DEDCC2D4004675003E8F00AE4A0078560D26E100EA730D7E100D3A820CEB7F00A89300722B001DC70CE3EB00371709E430D12511DD61B91038A5D74882D1462600D020007ECF002CDAC8F25406F3D400E47100485800A9EEDD9855008473053EB550343100113A0D32C000782BDD403042C91F1D83B90010040D93EBC0C51C0058B9008AED003B77004C00DDCB7400EAF000D8B000D4850833A8DA718200371D047AF0DDBB15D0D4020093EC002B68DC6CB70013780456DFF000DB2200BD0F0DD6880043CF00D9DD00293CD023E10BE20B0D44627DDDD21440F2000B4CD02EC90DF2F30011E9A0EBFD00543D00567F00B3CB00D56D0C32FC00E2C000019000C011008591DDDF29D3299600D60002E00C002F83DD9CE200CCB4004208E0034C09F09AEE00C6E0240F0DCE753D813FE26B2530DA400042680013E90E11B9EDF389EDF1A0E00332C0029AECEF3D2D82D2E22519D09D5100801200326B00E19E003350E0050CEE33E9001EB60029BFCDC2E7405EC3CE4C052E457A00AA4F0AC40B003C0200066FEC993DC688100E45A2EE45C8E298B9D0957F0E5AAA00A4F0A02A4000281A00AEA7C3E73AEBE12FEE698D2D4723EE7EB32447320EE2B802EE88C5E108A7DD88C5D748ADDE8945EE9967EE9989EE99ABEE99C1E10003B

    [/autoit]

    Wenn ihr mir helfen könntet, würdet ihr mich echt einen mega Gefallen tun.

    Mfg , Julien

  • Nein , das möchte ich nicht.
    Es hat schon seine Gründe, wieso ich Bilder als Binary von einer Textdatei laden möchte.
    Ist für ein Projekt, aber ich bekomms nicht hin ;/
    Das mit der Binary von einer Textdatei auslesen ist mir sehr wichtig, ich verstehe auch nicht, wieso meine Methode nicht funktioniert.

  • Danke, ich möchte aber die Binary aus einer Textdatei auslesen und das dieses Bild dann angezeigt wird, das funktioniert bei mir aber nicht ganz ..

  • Das funktioniert so alles nicht.

    Die Binary soll wie oben geschrieben und es am Beispiels zu sehen ist, aus einer Txtdatei ausgelesen werden. Das Ganze funktioniert aber nicht ;/

  • Das Script geht Problemlos. Dein Fehler ist schlicht das in deinem Binärcode den oben gepostet hast einen Zeilenumbruch drin hast.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo Julien,

    ich habe mal aus den Binärdaten von BugFix eine Datei erstellt, indem ich das Ergebnis in der Zwischenablage in eine Datei eingefügt habe und dort manuell alles unötige entfernt habe.

    Diese Textdatei kann man in seinem Skript s einlesen:

    [autoit]

    $sData = StringReplace("0x" & FileRead(@ScriptDir & "\Beetle.bin"),@crlf,"")

    [/autoit]

    de Variable $sData kann man danach mit _CreateTmpFile so weiterbenutzen wie von BugFix's Methode gewohnt. Hier ein Skript wo ich es zu Demozwecken einsetze:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include "GUICreateTransparent.au3"

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $SC_DRAGMOVE = 0xF012

    [/autoit] [autoit][/autoit] [autoit]

    $sData = StringReplace("0x"&FileRead(@ScriptDir & "\Beetle.txt"),@crlf,"")
    _CreateTmpFile("Beetle.png", $sData)

    [/autoit] [autoit][/autoit] [autoit]

    ; Transparentes GUI erzeugen
    $hGUI = _GUICreate_Transparent(@TempDir & "\Beetle.png")

    [/autoit] [autoit][/autoit] [autoit]

    ; Child-GUI mit Controls erzeugen
    $hChild = GUICreate("MDIChild", 400, 400, 150, 150, $WS_POPUP, $WS_EX_MDICHILD + $WS_EX_LAYERED, $hGUI)
    GUISetBkColor(0x123456)
    GUICtrlCreateButton("Button 1", 20, 20)
    GUICtrlCreateButton("Button 2", 20, 50)
    GUICtrlCreateButton("Button 3", 20, 80)
    GUICtrlCreateInput("Input 1", 20, 110, -1, 20)
    ; Hintergrundfarbe des Child-GUI transparent setzen
    _WinAPI_SetLayeredWindowAttributes($hChild, 0x123456, 0xff)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_SHOW, $hChild)

    [/autoit] [autoit][/autoit] [autoit]

    ; Wenn man das GUI bewegen will
    GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
    EndFunc ;==>_WM_LBUTTONDOWN

    [/autoit] [autoit][/autoit] [autoit]

    ; erstellt im TEMPDIR die Datei $sFileName mit Daten von $sBin
    Func _CreateTmpFile($sFileName, $sBin)
    Local $sFile = @TempDir & "\" & $sFileName
    Local $hFileOut = FileOpen($sFile, 18)
    FileWrite($hFileOut, Binary($sBin))
    FileClose($hFileOut)
    Return $sFile
    EndFunc ;==>_CreateTmpFile

    [/autoit]

    dazu wird GuiCreateTransparent von Großvater und natürlich eine Bin: autoit.de/wcf/attachment/15122/ benötigt,

    mfg autoBert

  • @autoboert :

    Ich habe es gerade mal getestet, das von funktioniert, jedoch habe ich dann versucht, selber mal Binärdaten zu erstellen und diese in Bettle.txt zu speichern.

    Das Unnötige habe ich natürlich entfernt, aber es erscheint kein Bild, wenn ich es dann starte ;/
    Ich möchte mir mal ein Skript basteln, welches Binärdaten erstellt und diese ohne unnötigen Kramms in Bettle.txt speichert.

    Hier mal mein Versuch, jedoch funktioniert es nicht ;

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 471, 78, 192, 124)
    $Pfad = GUICtrlCreateLabel("Pfad", 8, 8, 26, 17)
    $Input1 = GUICtrlCreateInput("Input1", 40, 8, 329, 21)
    $Button1 = GUICtrlCreateButton("Button1", 384, 8, 75, 25)
    $create = GUICtrlCreateButton("create", 216, 40, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Datei = FileOpenDialog("Datei auswählen","C:\","(*.*)")
    GuiCtrlSetData($Input1,$Datei)
    Case $create
    $hFile = FileOpen(GuiCtrlRead($Input1), 16)
    $bRead = FileRead($hFile)
    FileClose($hFile)
    $File2 = FileOpen("Bettle.txt",2)
    Filewrite("Bettle.txt",$bRead)
    FileClose($File2)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]