#NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=c:\Main.ico #AutoIt3Wrapper_Outfile=Gif2Avi.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_UseUpx=y ;~ #AutoIt3Wrapper_UseX64=n #AutoIt3Wrapper_UPX_Parameters=--best --lzma #AutoIt3Wrapper_Res_Description=Gif2Avi #AutoIt3Wrapper_Res_Comment=Convert animated Gif to Avi Animation File #AutoIt3Wrapper_Res_Fileversion=1.0.8 #AutoIt3Wrapper_Res_LegalCopyright=wakillon 2016 #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer% #AutoIt3Wrapper_Res_Field=Compile date|%longdate% %time #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so #AutoIt3Wrapper_Run_After=del "%scriptfile%_stripped.au3" #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #Region ;************ Includes ************ #Include #Include #Include #include #EndRegion ;************ Includes ************ Opt ( 'GUICloseOnESC', 0 ) Opt ( 'GUIOnEventMode', 1 ) Opt ( 'MustDeclareVars', 1 ) AutoItWinSetTitle ( '-G1f-2-Av1-' ) If _ScriptIsAlreadyRunning() Then Exit ;~ http://preloaders.net/en/search/circle ;~ http://loading.io/ ;~ https://dribbble.com/tags/preloader ;~ http://www.chimply.com/Generator#classic-spinner,animatedCircle ;~ http://tools.bit-hive.com/spinner/ #Region ------ Global Variables ------------------------------ Global Const $OF_CREATE = 0x00001000 Global Const $AVIIF_KEYFRAME = 0x00000010 Global Const $AVIERR_OK = 0 Global $hAvifil32Dll Global Const $ICINFO = 'DWORD dwSize;DWORD fccType;DWORD fccHandler;DWORD dwFlags;DWORD dwVersion;DWORD dwVersionICM;WCHAR szName[16];WCHAR szDescription[128];WCHAR szDriver[128];' Global Const $BITMAPFILEHEADER = 'WORD bfType;DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;' Global Const $BITMAPINFOHEADER = 'dword biSize;long biWidth;long biHeight;short biPlanes;short biBitCount;dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;' Global Const $AVISTREAMINFO = 'dword fccType;dword fccHandler;dword dwFlags;dword dwCaps;short wPriority;short wLanguage;dword dwScale;dword dwRate;dword dwStart;dword dwLength;dword dwInitialFrames;dword dwSuggestedBufferSize;dword dwQuality;dword dwSampleSize;int rleft;int rtop;int rright;int rbottom;dword dwEditCount;dword dwFormatChangeCount;wchar[64];' Global Const $AVICOMPRESSOPTIONS = 'DWORD fccType;DWORD fccHandler;DWORD dwKeyFrameEvery;DWORD dwQuality;DWORD dwBytesPerSecond;DWORD dwFlags;PTR lpFormat;DWORD cbFormat;PTR lpParms;DWORD cbParms;DWORD dwInterleaveEvery;' Global Const $StreamtypeVIDEO = _Create_mmioFOURCC ( 'vids' ) ; Global $hGui, $idButtonSave, $idButtonCreate, $idButtonExit, $hStatusBar, $idLabelDrop, $idEditFps, $idEditFrameCount, $idEditFrameWidth, $idEditFrameHeight Global $idLabelBkgroundColor, $idEditBkgroundColor, $idChecBoxStyle, $idLabelColor, $idAviLoader, $idButtonOpen, $idLabelFps, $idAvi, $idLabelPath, $idEditCropWidth, $idEditCropHeight Global $iLoad, $iSave, $iGenerate, $iOpen, $iChoose Global $ahBitmap, $HBitmap, $hBitmapPreview, $hBitmapResized, $hCloneArea Global $sAviPath, $sPreviewAviPath, $sGifPath, $sFile, $sCurrentFilePath, $sFileSave, $sDefaultName Global $aAVI, $aAVIPreview, $aDim, $aDelays, $iFps, $iDelay, $BackgroundColor, $iFrameCount, $aCtrlPos, $fRatio, $iW, $iH, $Color, $iCropW, $iCropH #EndRegion --- Global Variables ------------------------------ _GDIPlus_Startup() _FileInstall() _Gui() #Region ------ Main Loop ------------------------------ While 1 If $iGenerate Then If FileExists ( $sCurrentFilePath) And IsArray ( $ahBitmap ) And GUICtrlRead ( $idEditFrameWidth ) Then GUICtrlSetState ( $idAviLoader, $GUI_SHOW ) GUICtrlSetState ( $idAviLoader, $GUI_AVISTART ) _GuiCtrlAviRemove() _GUICtrlStatusBar_SetText ( $hStatusBar, 'Please Wait While Generating Avi File...', 0 ) $iW = GUICtrlRead ( $idEditFrameWidth ) $iH = GUICtrlRead ( $idEditFrameHeight ) _AviInit() ;~ $sAviPath = @TempDir & '\Gif2Avi\' & _FileGetNameWithoutExtByFullPath ( $sCurrentFilePath ) & '.avi' $sAviPath = @TempDir & '\Gif2Avi\Test.avi' $BackgroundColor = GUICtrlRead ( $idEditBkgroundColor ) If $BackgroundColor = '' Then $BackgroundColor = '0xFFFFFF' ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $BackgroundColor : ' & $BackgroundColor & @Crlf ) $fRatio = 1 If $iW > $aCtrlPos[2] Or $iH > $aCtrlPos[3] Then $fRatio = $aCtrlPos[2]/$iW If $aCtrlPos[3]/$iH < $fRatio Then $fRatio = $aCtrlPos[3]/$iH EndIf ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $fRatio : ' & $fRatio & @Crlf ) $iFps = GUICtrlRead ( $idEditFps ) ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $iFps : ' & $iFps & @Crlf ) $aAVI = _AviCreate ( $sAviPath, $iFps, $iW, $iH, 16, 'DIB ', 10000 ) ; DIB for the Microsoft Device Independent Bitmap. http://www.jmcgowan.com/avicodecs.html If $fRatio < 1 Then $sPreviewAviPath = @TempDir & '\Gif2Avi\Preview.avi' $aAVIPreview = _AviCreate ( $sPreviewAviPath, $iFps, $iW*$fRatio, $iH*$fRatio, 16, 'DIB ', 10000 ) Else $sPreviewAviPath = $sAviPath $aAVIPreview = $aAVI EndIf $iCropW = GUICtrlRead ( $idEditCropWidth ) ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $iCropW : ' & $iCropW & @Crlf ) $iCropH = GUICtrlRead ( $idEditCropHeight ) ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $iCropH : ' & $iCropH & @Crlf ) For $i = 0 To UBound ( $ahBitmap ) -1 $hCloneArea = _GDIPlus_BitmapCloneArea ( $ahBitmap[$i], $iCropW, $iCropH, $aDim[0] -2*$iCropW, $aDim[1] -2*$iCropH, $GDIP_PXF32ARGB ) If $fRatio < 1 Then $hBitmapPreview = _GDIPlus_ImageScale ( $hCloneArea, $iW/( $aDim[0] -2*$iCropW )*$fRatio, $iH/($aDim[1] -2*$iCropH)*$fRatio ) $HBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap ( $hBitmapPreview, 0xFF000000 + $BackgroundColor ) _GDIPlus_ImageDispose ( $hBitmapPreview ) _AviAddHBitmap ( $aAVIPreview, $HBitmap ) _WinAPI_DeleteObject ( $HBitmap ) $HBitmap = 0 EndIf $hBitmapResized = _GDIPlus_ImageScale ( $hCloneArea, $iW/( $aDim[0] -2*$iCropW ), $iH/( $aDim[1]-2*$iCropH ) ) _GDIPlus_BitmapDispose ( $hCloneArea ) $HBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap ( $hBitmapResized, 0xFF000000 + $BackgroundColor ) _GDIPlus_ImageDispose ( $hBitmapResized ) _AviAddHBitmap ( $aAVI, $HBitmap ) _WinAPI_DeleteObject ( $HBitmap ) $HBitmap = 0 Sleep ( 10 ) Next If $fRatio < 1 Then _AviRelease ( $aAVIPreview ) _AviRelease ( $aAVI ) _AviExit() ConsoleWrite ( 'Size : ' & FileGetSize ( $sAviPath )/1024 & ' ko' & @Crlf ) $idAvi = GUICtrlCreateAvi ( $sPreviewAviPath, 0, $aCtrlPos[0], $aCtrlPos[1], $iW*$fRatio, $iH*$fRatio ) If _IsChecked ( $idChecBoxStyle ) Then GUICtrlSetStyle ( $idAvi, 16+1 ) ; $ACS_NONTRANSPARENT + $ACS_CENTER Else GUICtrlSetStyle ( $idAvi, 2+1 ) ; $ACS_TRANSPARENT + $ACS_CENTER EndIf GUICtrlSetPos ( $idAvi, _ $aCtrlPos[0] + ( $aCtrlPos[2] - $fRatio*$iW )/2, _ ; x $aCtrlPos[1] + ( $aCtrlPos[3] - $fRatio*$iH )/2, _ ; y $fRatio*$iW, _ ; w $fRatio*$iH ) ; h GUICtrlSetState ( $idAvi, $GUI_SHOW ) GUICtrlSetState ( $idAvi, $GUI_AVISTART ) _GUICtrlStatusBar_SetText ( $hStatusBar, 'Avi File Generated...', 0 ) Else _GUICtrlStatusBar_SetText ( $hStatusBar, 'File Not Found...', 0 ) EndIf $iGenerate = 0 _GuiEventsSet ( True ) GUICtrlSetState ( $idAviLoader, $GUI_AVISTOP ) GUICtrlSetState ( $idAviLoader, $GUI_HIDE ) ElseIf $iLoad Then GUICtrlSetState ( $idAviLoader, $GUI_SHOW ) GUICtrlSetState ( $idAviLoader, $GUI_AVISTART ) _GUICtrlStatusBar_SetText ( $hStatusBar, 'Please Wait While Loading Gif File...', 0 ) ControlSetText ( $hGui, '', $idEditCropWidth, 0 ) ControlSetText ( $hGui, '', $idEditCropHeight, 0 ) ControlSetText ( $hGui, '', $idLabelPath, _FileCompactPath ( $sCurrentFilePath, 65 ) ) ControlSetText ( $hGui, '', $idLabelDrop, '' ) _GuiCtrlAviRemove() $aDim = _GifGetDimension ( $sCurrentFilePath ) ConsoleWrite ( 'Width : ' & $aDim[0] & @Crlf ) ControlSetText ( $hGui, '', $idEditFrameWidth, $aDim[0] ) ConsoleWrite ( 'Height : ' & $aDim[1] & @Crlf ) ControlSetText ( $hGui, '', $idEditFrameHeight, $aDim[1] ) $aDelays = _GifGetFramesDelays ( $sCurrentFilePath ) $iDelay = 0 For $i = 0 To UBound ( $aDelays ) -1 $iDelay +=$aDelays[$i] Next $iDelay = $iDelay/UBound ( $aDelays ) If $iDelay = 0 Then $iDelay = 10 ConsoleWrite ( '$iDelay : ' & $iDelay & @Crlf ) ; 100eme de sec $iFps = Int ( 100/$iDelay ) ConsoleWrite ( '$iFps : ' & $iFps & @Crlf ) ControlSetText ( $hGui, '', $idEditFps, $iFps ) $iFrameCount = _GifGetFrameCount ( $sCurrentFilePath ) ConsoleWrite ( '$iFrameCount : ' & $iFrameCount & @Crlf ) ControlSetText ( $hGui, '', $idEditFrameCount, $iFrameCount ) _BitmapArrayDispose() $ahBitmap = _GifExtractAllFramesToBinary ( $sCurrentFilePath ) ; based 0 If Not @error Then _GUICtrlStatusBar_SetText ( $hStatusBar, 'Gif File Loaded...', 0 ) Else $ahBitmap = 0 _GUICtrlStatusBar_SetText ( $hStatusBar, 'Error, Gif File Not Loaded...', 0 ) ControlSetText ( $hGui, '', $idLabelDrop, @CRLF & @CRLF & "Drag'n Drop" & @CRLF & 'an animated gif here' ) EndIf $iLoad = 0 _GuiEventsSet ( True ) GUICtrlSetState ( $idAviLoader, $GUI_AVISTOP ) GUICtrlSetState ( $idAviLoader, $GUI_HIDE ) ElseIf $iSave Then _GUICtrlStatusBar_SetText ( $hStatusBar, 'Saving Avi File...', 0 ) $sDefaultName = _FileGetNameWithoutExtByFullPath ( $sCurrentFilePath ) & '_' & $iW & 'x' & $iH & '.avi' $sFileSave = FileSaveDialog ( 'Save', @WorkingDir, '(*.avi)', 2+16, $sDefaultName, $hGui ) If Not @error Then If FileCopy ( $sAviPath, $sFileSave, 1+8 ) Then _GUICtrlStatusBar_SetText ( $hStatusBar, 'Save Done...', 0 ) Else _GUICtrlStatusBar_SetText ( $hStatusBar, 'Save Canceled...', 0 ) EndIf Else _GUICtrlStatusBar_SetText ( $hStatusBar, 'Save Canceled...', 0 ) EndIf $iSave = 0 _GuiEventsSet ( True ) ElseIf $iOpen Then $sFile = FileOpenDialog ( 'Select an Animated Gif', '', '(*.gif)', 1, '', $hGui ) If Not @error Then $iFrameCount = _GifGetFrameCount ( $sFile ) If $iFrameCount > 1 Then $sCurrentFilePath = $sFile ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $sCurrentFilePath : ' & $sCurrentFilePath & @Crlf ) _GUICtrlStatusBar_SetText ( $hStatusBar, '', 0 ) $iLoad = 1 Else _GUICtrlStatusBar_SetText ( $hStatusBar, 'File is not an Animated Gif...', 0 ) EndIf Else _GUICtrlStatusBar_SetText ( $hStatusBar, 'Selection Canceled...', 0 ) EndIf $iOpen = 0 _GuiEventsSet ( True ) ElseIf $iChoose = 1 Then $Color = _ChooseColor ( 2, 0, 0, $hGui ) If Not @error Then ControlSetText ( $hGui, '', $idEditBkgroundColor, $Color ) $iChoose = 0 Else GUICtrlSetBkColor ( $idLabelColor, GUICtrlRead ( $idEditBkgroundColor ) ) If IsArray ( $aDim ) And GUICtrlRead ( $idEditFrameWidth ) Then _ ControlSetText ( $hGui, '', $idEditFrameHeight, Int ( ( ( $aDim[1] -2*GUICtrlRead ( $idEditCropHeight ) )/( $aDim[0] -2*GUICtrlRead ( $idEditCropWidth ) ) )*GUICtrlRead ( $idEditFrameWidth ) ) ) EndIf Sleep ( 250 ) WEnd #EndRegion --- Main Loop ------------------------------ Func _AviAddHBitmap ( ByRef $ahAvi, $hHBitmap ) ; monoceres, Prog@ndy Local $DC = _WinAPI_GetDC ( 0 ) Local $hDC = _WinAPI_CreateCompatibleDC ( $DC ) _WinAPI_ReleaseDC ( 0, $DC ) Local $OldBMP = _WinAPI_SelectObject ( $hDC, $hHBitmap ) Local $bits = DllStructCreate ( 'byte[' & DllStructGetData ( $ahAvi[3], 'biSizeImage' ) & ']' ) _WinAPI_GetDIBits ( $hDC, $hHBitmap, 0, Abs ( DllStructGetData ( $ahAvi[3], 'biHeight' ) ), DllStructGetPtr ( $bits ), DllStructGetPtr ( $ahAvi[3] ), 0 ) _WinAPI_SelectObject ( $hDC, $OldBMP ) _WinAPI_DeleteDC ( $hDC ) DllCall ( $hAvifil32Dll, 'int', 'AVIStreamWrite', 'ptr', $ahAvi[1], 'long', $ahAvi[2], 'long', 1, 'ptr', DllStructGetPtr ( $bits ), 'long', DllStructGetSize ( $bits ), 'long', $AVIIF_KEYFRAME, 'ptr*', 0, 'ptr*', 0 ) If @error Then Return SetError ( 1, 0, 0 ) $bits = 0 $ahAvi[2] += 1 EndFunc ;==> _AviAddHBitmap() Func _AviCreate ( $sFilename, $FrameRate, $Width, $Height, $BitCount = 24, $mmioFOURCC = 'MSVC', $iQuality = 3333, $iKeyFrameEvery = 10 ) ; monoceres, Prog@ndy, UEZ ; $iQuality from -1 to 10000 If FileExists ( $sFilename ) Then FileDelete ( $sFilename ) Local $RetArr[6] ; avi file handle, compressed stream handle, bitmap count, BitmapInfoheader, Stride, stream handle Local $aRet, $pFile, $tASI, $pStream, $psCompressed Local $stride = BitAND ( ( $Width*( $BitCount/8 ) +3 ), BitNOT ( 3 ) ) Local $tBI = DllStructCreate ( $BITMAPINFOHEADER ) Local $StreamtypeCompression = _Create_mmioFOURCC ( $mmioFOURCC ) DllStructSetData ( $tBI, 'biSize', DllStructGetSize ( $tBI ) ) DllStructSetData ( $tBI, 'biWidth', $Width ) DllStructSetData ( $tBI, 'biHeight', $Height ) DllStructSetData ( $tBI, 'biPlanes', 1 ) DllStructSetData ( $tBI, 'biBitCount', $BitCount ) DllStructSetData ( $tBI, 'biSizeImage', $stride * $Height ) $tASI = DllStructCreate ( $AVISTREAMINFO ) ; https://msdn.microsoft.com/en-us/library/aa919806.aspx DllStructSetData ( $tASI, 'fccType', $StreamtypeVIDEO ) DllStructSetData ( $tASI, 'fccHandler', $StreamtypeCompression ) DllStructSetData ( $tASI, 'dwScale', 1 ) DllStructSetData ( $tASI, 'dwRate', $FrameRate ) DllStructSetData ( $tASI, 'dwQuality', $iQuality ) ; Quality is represented as a number between 0 and 10,000. For compressed data, this typically represents the value of the quality parameter passed to the compression software. If set to -1, drivers use the default quality value. DllStructSetData ( $tASI, 'dwSuggestedBufferSize', $stride * $Height ) DllStructSetData ( $tASI, 'rright', $Width ) DllStructSetData ( $tASI, 'rbottom', $Height ) Local $tParms = DllStructCreate ( $ICINFO ) DllCall ( 'Msvfw32.dll', 'BOOL', 'ICInfo', 'DWORD', $StreamtypeVIDEO, 'DWORD', $StreamtypeCompression, 'ptr', DllStructGetPtr ( $tParms ) ) If @error Then Return SetError ( 1, 0, 0 ) Local $tACO = DllStructCreate ( $AVICOMPRESSOPTIONS ) ; https://msdn.microsoft.com/en-us/library/windows/desktop/dd742972%28v=vs.85%29.aspx DllStructSetData ( $tACO, 'fccType', $StreamtypeVIDEO ) DllStructSetData ( $tACO, 'fccHandler', $StreamtypeCompression ) DllStructSetData ( $tACO, 'dwKeyFrameEvery', $iKeyFrameEvery ) DllStructSetData ( $tACO, 'dwQuality', $iQuality ) DllStructSetData ( $tACO, 'dwBytesPerSecond', 0 ) DllStructSetData ( $tACO, 'dwFlags', 8 ) DllStructSetData ( $tACO, 'lpFormat', 0 ) DllStructSetData ( $tACO, 'cbFormat', 0 ) DllStructSetData ( $tACO, 'lpParms', DllStructGetPtr ( $tParms ) ) DllStructSetData ( $tACO, 'cbParms', DllStructGetSize ( $tParms ) ) DllStructSetData ( $tACO, 'dwInterleaveEvery', 0 ) $aRet = DllCall ( $hAvifil32Dll, 'int', 'AVIFileOpenW', 'ptr*', 0, 'wstr', $sFilename, 'uint', $OF_CREATE, 'ptr', 0 ) If @error Then Return SetError ( 2, 0, 0 ) $pFile = $aRet[1] $aRet = DllCall ( $hAvifil32Dll, 'int', 'AVIFileCreateStream', 'ptr', $pFile, 'ptr*', 0, 'ptr', DllStructGetPtr ( $tASI ) ) If @error Then Return SetError ( 3, 0, 0 ) $pStream = $aRet[2] $aRet = DllCall ( $hAvifil32Dll, 'int', 'AVIMakeCompressedStream', 'ptr*', 0, 'ptr', $pStream, 'ptr', DllStructGetPtr ( $tACO ), 'ptr', 0 ) If @error Then Return SetError ( 4, 0, 0 ) If $aRet[0] <> $AVIERR_OK Then $RetArr[0] = $pFile $RetArr[1] = $pStream $RetArr[2] = 0 $RetArr[3] = $tBI $RetArr[4] = $stride $RetArr[5] = $pStream Return SetError ( 2, 0, $RetArr ) EndIf $psCompressed = $aRet[1] ; The format for the stream is the same as BITMAPINFOHEADER $aRet = DllCall ( $hAvifil32Dll, 'int', 'AVIStreamSetFormat', 'ptr', $psCompressed, 'long', 0, 'ptr', DllStructGetPtr ( $tBI ), 'long', DllStructGetSize ( $tBI ) ) If @error Then Return SetError ( 5, 0, 0 ) $RetArr[0] = $pFile $RetArr[1] = $psCompressed $RetArr[2] = 0 $RetArr[3] = $tBI $RetArr[4] = $stride $RetArr[5] = $pStream $tACO = 0 $tParms = 0 $tASI = 0 $tBI = 0 Return $RetArr EndFunc ;==> _AviCreate() Func _AviExit() DllCall ( $hAvifil32Dll, 'none', 'AVIFileExit' ) DllClose ( $hAvifil32Dll ) EndFunc ;==> _AviExit() Func _AviInit() $hAvifil32Dll = DllOpen ( 'Avifil32.dll' ) If $hAvifil32Dll = -1 Then Return SetError ( -1, 0, 0 ) DllCall ( $hAvifil32Dll, 'none', 'AVIFileInit' ) If @error Then Return SetError ( 1, 0, 0 ) EndFunc ;==> _AviInit() Func _AviRelease ( $ahAvi ) DllCall ( $hAvifil32Dll, 'int', 'AVIStreamRelease', 'ptr', $ahAvi[1] ) DllCall ( $hAvifil32Dll, 'int', 'AVIStreamRelease', 'ptr', $ahAvi[5] ) DllCall ( $hAvifil32Dll, 'int', 'AVIFileRelease', 'ptr', $ahAvi[0] ) EndFunc ;==> _AviRelease() Func _Base64Decode ( $input_string ) ; by trancexx Local $struct = DllStructCreate ( 'int' ) Local $a_Call = DllCall ( 'Crypt32.dll', 'int', 'CryptStringToBinary', 'str', $input_string, 'int', 0, 'int', 1, 'ptr', 0, 'ptr', DllStructGetPtr ( $struct, 1 ), 'ptr', 0, 'ptr', 0 ) If @error Or Not $a_Call[0] Then Return SetError ( 1, 0, '' ) Local $a = DllStructCreate ( 'byte[' & DllStructGetData ( $struct, 1 ) & ']' ) $a_Call = DllCall ( 'Crypt32.dll', 'int', 'CryptStringToBinary', 'str', $input_string, 'int', 0, 'int', 1, 'ptr', DllStructGetPtr ( $a ), 'ptr', DllStructGetPtr ( $struct, 1 ), 'ptr', 0, 'ptr', 0 ) If @error Or Not $a_Call[0] Then Return SetError ( 2, 0, '' ) Return DllStructGetData ( $a, 1 ) EndFunc ;==> _Base64Decode() Func _BitmapArrayDispose() If IsArray ( $ahBitmap ) Then For $i = 0 To UBound ( $ahBitmap ) -1 _GDIPlus_BitmapDispose ( $ahBitmap[$i] ) Next EndIf EndFunc ;==> _BitmapArrayDispose() Func _Create_mmioFOURCC ( $FOURCC ) ; coded by UEZ If StringLen ( $FOURCC ) <> 4 Then Return SetError ( 1, 0, 0 ) Local $aFOURCC = StringSplit ( $FOURCC, '', 2 ) Return BitOR ( Asc ( $aFOURCC[0] ), BitShift ( Asc ( $aFOURCC[1] ), -8 ), BitShift ( Asc ( $aFOURCC[2] ), -16 ), BitShift ( Asc ( $aFOURCC[3] ), -24 ) ) EndFunc ;==> _Create_mmioFOURCC() Func _Exit() _GuiCtrlAviRemove() _BitmapArrayDispose() _GDIPlus_Shutdown() GUIDelete ( $hGui ) DirRemove ( @TempDir & '\Gif2Avi', 1 ) Exit EndFunc ;==> _Exit() Func _FileCompactPath ( $sName, $iChrMax ) If StringLen ( $sName ) <= $iChrMax Then Return $sName Local $i, $stName Do $stName = StringLeft ( $sName, Int ( $iChrMax/2 -1 -$i ) ) & '...' & StringRight ( $sName, Int ( $iChrMax/2 -1 ) ) $sName = $stName $i = 1 Until StringLen ( $stName ) <= $iChrMax Return $stName EndFunc ;==> _FileCompactPath() Func _FileGetNameWithoutExtByFullPath ( $sFullPath ) Local $aFileName = StringSplit ( $sFullPath, '\' ) If Not @error Then Return StringLeft ( $aFileName[$aFileName[0]], StringInStr ( $aFileName[$aFileName[0]], ".", 0, -1 ) - 1 ) EndFunc ;==> _FileGetNameWithoutExtByFullPath() Func _FileInstall() Loadinggifanimation_60X60Avi ( 'loading-gif-animation_60x60.avi', @TempDir & '\Gif2Avi' ) MainIco ( 'Main.ico', @TempDir & '\Gif2Avi' ) EndFunc ;==> _FileInstall() Func _GdipImageContainsAlphaValues ( $hImage ) ;~ $GDIP_IMAGEFLAGS_HASALPHA = 0x0002 ; pixel data contains alpha values. Local $aRet = DllCall ( $__g_hGDIPDll, 'int', 'GdipGetImageFlags', 'handle', $hImage, 'long*', 0 ) If Not @error And BitAND ( $aRet[2], $GDIP_IMAGEFLAGS_HASALPHA ) Then Return 1 EndFunc ;==> _GdipImageContainsAlphaValues() Func _GifExtractAllFramesToBinary ( $sGifPath ) If Not FileExists ( $sGifPath ) Then Return SetError ( -1, 0, 0 ) Local $hImage = _GDIPlus_ImageLoadFromFile ( $sGifPath ) Local $tDim = DllStructCreate ( 'byte[' & 16 & '];' ) Local $aRet = DllCall ( $__g_hGDIPDll, 'uint', 'GdipImageGetFrameDimensionsCount', 'handle', $hImage, 'int*', 0 ) If @error Then Return SetError ( 1, 0, 0 ) DllCall ( $__g_hGDIPDll, 'uint', 'GdipImageGetFrameDimensionsList', 'handle', $hImage, 'ptr', DllStructGetPtr ( $tDim ), 'int', $aRet[2] ) If @error Then Return SetError ( 2, 0, 0 ) Local $aRet = DllCall ( $__g_hGDIPDll, 'uint', 'GdipImageGetFrameCount', 'handle', $hImage, 'ptr', DllStructGetPtr ( $tDim ), 'uint*', 0 ) If @error Then Return SetError ( 3, 0, 0 ) Local $iFrameCount = $aRet[3] Local $iWidth = _GDIPlus_ImageGetWidth ( $hImage ) Local $iHeight = _GDIPlus_ImageGetHeight ( $hImage ) Local $aPixelFormat = _GDIPlus_ImageGetPixelFormat ( $hImage ) Local $iPercent, $hBitmap, $sFileName Dim $ahClone[$iFrameCount] For $i = 0 To $iFrameCount -1 DllCall ( $__g_hGDIPDll, 'uint', 'GdipImageSelectActiveFrame', 'handle', $hImage, 'ptr', DllStructGetPtr ( $tDim ), 'uint', $i ) ; based 0 If @error Then Return SetError ( 4, 0, 0 ) $ahClone[$i] = _GDIPlus_BitmapCloneArea ( $hImage, 0, 0, $iWidth, $iHeight, $aPixelFormat[0] ) ;~ If Not $i Then ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] Transparency : ' & _GdipImageContainsAlphaValues ( $ahClone[$i] ) & @Crlf ) Sleep ( 20 ) ; limit cpu. Next _GDIPlus_ImageDispose ( $hImage ) $tDim = 0 Return $ahClone EndFunc ;==> _GifExtractAllFramesToBinary() Func _GifGetDimension ( $sGifPath ) If Not FileExists ( $sGifPath ) Then Return SetError ( -1 ) Local $hImage = _GDIPlus_ImageLoadFromFile ( $sGifPath ) Local $aRet[2] $aRet[0] = _GDIPlus_ImageGetWidth ( $hImage ) $aRet[1] = _GDIPlus_ImageGetHeight ( $hImage ) _GDIPlus_ImageDispose ( $hImage ) If $aRet[0] And $aRet[1] Then Return $aRet EndFunc ;==> _GifGetDimension() Func _GifGetFrameCount ( $sGifPath ) If Not FileExists ( $sGifPath ) Then Return SetError ( -1 ) Local $hImage = _GDIPlus_ImageLoadFromFile ( $sGifPath ) Local $tDL = DllStructCreate ( $tagGUID ) Local $pDimensionIDs = DllStructGetPtr ( $tDL ) Local $aGFDC = DllCall ( $__g_hGDIPDll, 'int', 'GdipImageGetFrameDimensionsCount', 'ptr', $hImage, 'int*', 0 ) If @error Then Return SetError ( 1, 0, 0 ) DllCall ( $__g_hGDIPDll, 'int', 'GdipImageGetFrameDimensionsList', 'ptr', $hImage, 'ptr', $pDimensionIDs, 'int', $aGFDC[2] ) If @error Then Return SetError ( 2, 0, 0 ) Local $aGFC = DllCall ( $__g_hGDIPDll, 'int', 'GdipImageGetFrameCount', 'int', $hImage, 'ptr', $pDimensionIDs, 'int*', 0 ) If @error Then Return SetError ( 3, 0, 0 ) $tDL = 0 _GDIPlus_ImageDispose ( $hImage ) Return $aGFC[3] EndFunc ;==> _GifGetFrameCount() Func _GifGetFramesDelays ( $sGifPath ) If Not FileExists ( $sGifPath ) Then Return SetError ( -1 ) Local Const $GDIP_PROPERTYTAGFRAMEDELAY = 0x5100 Local $hImage = _GDIPlus_ImageLoadFromFile ( $sGifPath ) Local $aCall = DllCall ( $__g_hGDIPDll, 'dword', 'GdipGetPropertyItemSize', 'ptr', $hImage, 'ptr', $GDIP_PROPERTYTAGFRAMEDELAY, 'dword*', 0 ) If @error Then Return SetError ( 1, 0, 0 ) Local $tRawPropItem = DllStructCreate ( 'byte[' & $aCall[3] & ']' ) DllCall ( $__g_hGDIPDll, 'dword', 'GdipGetPropertyItem', 'ptr', $hImage, 'dword', $GDIP_PROPERTYTAGFRAMEDELAY, 'dword', $aCall[3], 'ptr', DllStructGetPtr ( $tRawPropItem ) ) If @error Then Return SetError ( 2, 0, 0 ) Local $tPropItem = DllStructCreate ( 'int Id;dword Length;word Type;ptr Value', DllStructGetPtr ( $tRawPropItem ) ) Local $tPropertyData = DllStructCreate ( 'dword[' & DllStructGetData ( $tPropItem, 'Length' )/4 & ']', DllStructGetData ( $tPropItem, 'Value' ) ) Local $aDelay[_GifGetFrameCount ( $sGifPath )] For $i = 1 To UBound ( $aDelay ) $aDelay[$i -1] = DllStructGetData ( $tPropertyData, 1, $i ) ; delay in hundredths of seconds. Next _GDIPlus_ImageDispose ( $hImage ) $tPropertyData = 0 $tPropItem = 0 $tRawPropItem = 0 Return $aDelay ; based 0 EndFunc ;==> _GifGetFramesDelays() Func _Gui() $hGui = GUICreate ( 'Gif2Avi by wakillon', 500, 410, -1, -1, -1, 0x00000010 + 0x00000008 ) ; $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST GUISetIcon ( @TempDir & '\Gif2Avi\Main.ico' ) GUISetFont ( 9, 600, 0, 'arial', $hGui, 5 ) GUISetOnEvent ( $GUI_EVENT_CLOSE, '_GuiEvents', $hGui ) GUISetOnEvent ( $GUI_EVENT_DROPPED, '_GuiEvents', $hGui ) GUISetOnEvent ( $GUI_EVENT_RESTORE, '_GuiEvents', $hGui ) GUICtrlCreateLabel ( 'Avi Preview', 20, 5, 300, 12, 0x01 ) GUICtrlSetFont ( -1, 8, 500 ) $idLabelDrop = GUICtrlCreateLabel ( @CRLF & @CRLF & "Drag'n Drop" & @CRLF & 'an animated gif here', 20, 20, 300, 200, BitOR ( 0x01, 0x1000 ) ) GUICtrlSetFont ( -1, 16, 200 ) GUICtrlSetState ( -1, $GUI_DISABLE ) GUICtrlSetState ( -1, $GUI_DROPACCEPTED ) $aCtrlPos = ControlGetPos ( $hGui, '', $idLabelDrop ) $aCtrlPos[0] += 2 $aCtrlPos[1] += 2 $aCtrlPos[2] -= 4 $aCtrlPos[3] -= 4 ; fps $idLabelFps = GUICtrlCreateLabel ( 'FPS : ', 20, 230, 100, 20 ) $idEditFps = GUICtrlCreateEdit ( '', 130, 230, 60, 18, 2 ) ; $ES_RIGHT GUICtrlCreateLabel ( 'Frame Count : ', 20, 260, 100, 20 ) $idEditFrameCount = GUICtrlCreateEdit ( '', 130, 260, 60, 18, BitOR ( 2048, 2 ) ) ; $ES_READONLY, $ES_RIGHT GUICtrlCreateLabel ( 'Frame Width : ', 20, 290, 100, 20 ) $idEditFrameWidth = GUICtrlCreateEdit ( '', 130, 290, 60, 18, BitOR ( 0x2000, 2 ) ) ; $ES_NUMBER, $ES_RIGHT GUICtrlCreateLabel ( 'Frame Height : ', 20, 320, 100, 20 ) $idEditFrameHeight = GUICtrlCreateEdit ( '', 130, 320, 60, 18, BitOR ( 2048, 2 ) ) ; $ES_READONLY, $ES_RIGHT $idAviLoader = GUICtrlCreateAvi ( @TempDir & '\Gif2Avi\loading-gif-animation_60x60.avi', 0, 225, 250, 60, 60 ) GUICtrlSetState ( $idAviLoader, $GUI_HIDE ) ; previewer style $idChecBoxStyle = GUICtrlCreateCheckbox ( 'Style Non Transparent', 320, 230, 200, 20 ) GUICtrlSetOnEvent ( -1, '_GuiEvents' ) GUICtrlSetTip ( -1, @CRLF & 'Set Avi Preview Style' & @CRLF & 'for a correct display', 'Preview Style', 1, 1 ) ; bkground color $idLabelBkgroundColor = GUICtrlCreateLabel ( 'BkColor', 320, 260, 60, 20 ) $idEditBkgroundColor = GUICtrlCreateEdit ( '', 377, 259, 80, 18, 2 ) ; $ES_RIGHT ControlSetText ( $hGui, '', $idEditBkgroundColor, '0xFFFFFF' ) $idLabelColor = GUICtrlCreateLabel ( '', 464, 259, 18, 18, 0x1000 ) GUICtrlSetBkColor ( -1, 0xFFFFFF ) GUICtrlSetOnEvent ( -1, '_GuiEvents' ) GUICtrlSetCursor ( -1, 0 ) GUICtrlSetTip ( -1, @CRLF & 'Select a Color' & @CRLF & 'to use for HBITMAP BackGround', 'BackGround Color', 1, 1 ) GUICtrlCreateLabel ( 'Crop Width : ', 320, 290, 100, 20 ) GUICtrlSetTip ( -1, @CRLF & 'Size in pixels to Remove' & @CRLF & 'from the Left AND from the Right' & @CRLF & 'from original Width', 'Crop Width', 1, 1 ) $idEditCropWidth = GUICtrlCreateEdit ( '', 425, 290, 60, 18, BitOR ( 0x2000, 2 ) ) ; $ES_NUMBER, $ES_RIGHT ControlSetText ( $hGui, '', $idEditCropWidth, 0 ) GUICtrlCreateLabel ( 'Crop Height : ', 320, 320, 100, 20 ) GUICtrlSetTip ( -1, @CRLF & 'Size in pixels to Remove' & @CRLF & 'from the Top AND from the Bottom' & @CRLF & 'from original Height', 'Crop Height', 1, 1 ) $idEditCropHeight = GUICtrlCreateEdit ( '', 425, 320, 60, 18, BitOR ( 0x2000, 2 ) ) ; $ES_NUMBER, $ES_RIGHT ControlSetText ( $hGui, '', $idEditCropHeight, 0 ) $idButtonOpen = GUICtrlCreateButton ( 'Open', 340, 20, 140, 32 ) GUICtrlSetOnEvent ( -1, '_GuiEvents' ) $idButtonCreate = GUICtrlCreateButton ( 'Convert', 340, 75, 140, 32 ) GUICtrlSetOnEvent ( -1, '_GuiEvents' ) $idButtonSave = GUICtrlCreateButton ( 'Save', 340, 130, 140, 32 ) GUICtrlSetOnEvent ( -1, '_GuiEvents' ) $idButtonExit = GUICtrlCreateButton ( 'Exit', 340, 185, 140, 32 ) GUICtrlSetOnEvent ( -1, '_GuiEvents' ) $idLabelPath = GUICtrlCreateLabel ( '', 20, 355, 460, 20, 0x01 ) Local $aParts[1] = [-1] $hStatusBar = _GUICtrlStatusBar_Create ( $hGui ) _GUICtrlStatusBar_SetParts ( $hStatusBar, $aParts ) GUISetState() EndFunc ;==> _Gui() Func _GuiCtrlAviRemove() If $idAvi <> 0 Then GUICtrlSetState ( $idAvi, $GUI_AVISTOP ) GUICtrlSetState ( $idAvi, $GUI_HIDE ) GUICtrlDelete ( $idAvi ) $idAvi = 0 FileDelete ( @TempDir & '\Preview.avi' ) EndIf EndFunc ;==> _GuiCtrlAviRemove() Func _GuiEvents() If @GUI_CtrlId <> $GUI_EVENT_CLOSE And @GUI_CtrlId <> $idButtonExit And ( $iLoad Or $iGenerate Or $iSave Or $iOpen Or $iChoose ) Then Return Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE, $idButtonExit _Exit() Case $GUI_EVENT_DROPPED Local $sFile = @GUI_DRAGFILE ; Filename of the file being dropped $iFrameCount = _GifGetFrameCount ( $sFile ) If $iFrameCount < 2 Then Return $sCurrentFilePath = $sFile ConsoleWrite ( '!->-- [' & StringFormat ( '%03i', @ScriptLineNumber ) & '] $sCurrentFilePath : ' & $sCurrentFilePath & @Crlf ) _GuiEventsSet ( False ) $iLoad = 1 Case $idButtonSave If Not $sCurrentFilePath Then Return _GuiEventsSet ( False ) $iSave = 1 Case $idButtonCreate If Not $sCurrentFilePath Then Return _GuiEventsSet ( False ) $iGenerate = 1 Case $idButtonOpen _GuiEventsSet ( False ) $iOpen = 1 Case $idChecBoxStyle ; https://msdn.microsoft.com/en-us/library/windows/desktop/bb761886(v=vs.85).aspx If $idAvi Then GUICtrlSetStyle ( $idAvi, _IsChecked ( $idChecBoxStyle )*14 +3 ) ; $ACS_TRANSPARENT or $ACS_NONTRANSPARENT and $ACS_CENTER Case $idLabelColor $iChoose = 1 EndSwitch EndFunc ;==> _GuiEvents() Func _GuiEventsSet ( $bFlag ) If $bFlag Then GUICtrlSetOnEvent ( $GUI_EVENT_DROPPED, '_GuiEvents' ) GUICtrlSetOnEvent ( $idButtonSave, '_GuiEvents' ) GUICtrlSetOnEvent ( $idButtonCreate, '_GuiEvents' ) GUICtrlSetOnEvent ( $idButtonOpen, '_GuiEvents' ) Else GUICtrlSetOnEvent ( $GUI_EVENT_DROPPED, '_GuiNoEvents' ) GUICtrlSetOnEvent ( $idButtonSave, '_GuiNoEvents' ) GUICtrlSetOnEvent ( $idButtonCreate, '_GuiNoEvents' ) GUICtrlSetOnEvent ( $idButtonOpen, '_GuiNoEvents' ) EndIf EndFunc ;==> _GuiEventsSet() Func _GuiNoEvents() ; EndFunc ;==> _GuiNoEvents() Func _IsChecked ( $idCtrl ) Return BitAND ( GUICtrlRead ( $idCtrl ), $GUI_CHECKED ) = $GUI_CHECKED EndFunc ;==> _IsChecked() Func _LzntDecompress ( $bBinary ); by trancexx $bBinary = Binary ( $bBinary ) Local $tInput = DllStructCreate ( 'byte[' & BinaryLen ( $bBinary ) & ']' ) DllStructSetData ( $tInput, 1, $bBinary ) Local $tBuffer = DllStructCreate ( 'byte[' & 16*DllStructGetSize ( $tInput ) & ']' ) Local $a_Call = DllCall ( 'ntdll.dll', 'int', 'RtlDecompressBuffer', 'ushort', 2, 'ptr', DllStructGetPtr ( $tBuffer ), 'dword', DllStructGetSize ( $tBuffer ), 'ptr', DllStructGetPtr ( $tInput ), 'dword', DllStructGetSize ( $tInput ), 'dword*', 0 ) If @error Or $a_Call[0] Then Return SetError ( 1, 0, '' ) Local $tOutput = DllStructCreate ( 'byte[' & $a_Call[6] & ']', DllStructGetPtr ( $tBuffer ) ) Return SetError ( 0, 0, DllStructGetData ( $tOutput, 1 ) ) EndFunc ;==> _LzntDecompress() Func _ScriptIsAlreadyRunning() Local $a = WinList ( AutoItWinGetTitle() ) If Not @error Then Return UBound ( $a ) -1 > 1 EndFunc ;==> _ScriptIsAlreadyRunning() Func Loadinggifanimation_60X60Avi ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor. Local $sFileBin = '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' $sFileBin &= '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' $sFileBin &= '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' $sFileBin &= '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' $sFileBin &= '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' $sFileBin &= 'OQ+hH6Gn4ZjWWuFity7hYVeUUnNOZTkhaDNnGTkAvXflLWEPc07OADmMMa01MUaU4FL3XjlnoVVhc2FWgaFG1lpzTlJKYQ4nZwa5FL0ee28lKb13ABhjc07vPa01ISEAzjkQQicAMUbwc073XmcFIZQ/HTtlAyEuK9daa/de1lr/IwBjH+kaI3c/ST8AYQ1/Cf+TGRNgHwAfAB8AHwD/K58B/58BHwAfAB8AHwAVBvMkFQAP0QA/Bx8AHQAwMGRi8CAcAACfAR8AXwgTLX/TLd8HHwAfAB8AHwB1HFqAa9ZalFJSSrEsBO89EQDOOc457wA9EEJSSrVWGH5jly0fAB8AHwD/DdFIUgBKMUZSSpRS1s5aUWYRSRE8916RAXM2/O89kTwfJh8AHwA/B7GgMHNOtVZfSFto1lrwMUatNRNOX2UfAB8AP5tesaCZOjUmEwCbFXtv8JRSzjlRfF+GHwAfAPmTQNZakV6VBfU80ywzNEMXLpcJvXe1VnEPUs5KH2kfAJ8O1lp1AxUHD9kNMQfbANkHnHNSSvkRhNZav1ofADkdNYORG3nfSBhj81nbvvMJlQYY8mNRD5RS/xYfADWDNW0/n16TFLEzEwAfJFdlnHP5EYRSSj8CHwCxDtd7Hzlz9QTzDhBCf5szEtMKvfh3MUafBx8AUbZTB997P38HcQd/hZnRMQiRHlJK/78E2yRzBPWvHwB/B/8BO9Dk3nsxD5RS/wT3BFcHf/EVnwJ/B38HVQe3yPEgjHgx1lo/G5UV0wYxoVoya9Eoc05/AnUHMUaffwfXGrGBcQuTB5xzsYoPvyAzFpXFsRlrLUopCTEAUkrTASi0BP9/BxCcc+89EMhCMUYBCFprCcgDBAA5Z5RStVa1VgDWWt573nt7bwEBTBhjay1SSpwScw1WnHMDPvdeGABj/38xRikla8ItAQJKKVJKD1YZdww5ZwFxAQG1VjlnEP9/vXcDbVJKjEgx1loLK957Az9a5msBowEjCCEDdxF5GXdwGGOUUoM6gQCDDnsCb4EpnHOtNRBCh4NuhySBSd57tVaDFPCcc4wxhXiPPJc7izocGGOBN4Ergza1VmsmLYt4hcG1VoUIvXdPlzyVO1MdQwy9d8EUzhg5EELHeEM7vXdznk5JEdc80x1HHfdeSx1hRzaUUowxwY9LO5QmUssKwzxKKU0ee28Hzx1bHUU8e2+tNXOGTsUGwR3ee3NORyKBWx6cc8457z3DHR/HLEOxUx3BF8NXMUbvnj3FlkMiUddDHgghQx7AjDFKKZRSQ4hBPHwQQsODw+tZHUMroQDWmFqtNeMbowT3Xucf4TcPay3OOed95RQhdZ+9DuEIJS2jFeMEc05teuExDyklMUbvA+FgoQ4c917hhDUAIy3ee+/OPaE1IZkhCzFGrzsrD8DnHAghzjlhFi8KHBhj4R25DictUkoQ5kJjO6EfEEIxrWkLIa5PdShlcf8OY0Pee+MOOT5n6Xk/AD8A8w7hFvdeE6Emow33XuEO1lrv/j3jVC8Atz8rODUA45WhABAYY845pSPWWjEgRlJKhBAnAKUUM2EAJwCEECNouQ5aa2c5AKEO4Q5aayF45w5rIC2EEMYYNQCEEASMMfsOvXdaa3vybzUAWmthHvkOqRzpHXxrLf0O3wYZAHkHdxYQYELOOUIImRYZAGP4DCEE0S8fAHkWsQX/Bh8VAHUWMSyTADMmGGMQ5kKxWBUAKSUXAJ87HwD/kQezBREAfyUREfEscQb1O/xaa1VTHwAfAB8AHwAfAJl1NNZa80oTAa01/yr/GwBRWF8BHwAfAD14kQZzUhlRUzFGnxQXFEopAPkAAEopH0sVApMEHwB9B8xSSrNAdWGtNZ9SNQUAKSUAAEIIQgh8AADfNHkHnwf5LjEsnB5zt4LTHl+mXQchBAB4AGMMvwWfBx8A1R05eGdSSnUV05U7l18HIfIEcQdKKR8FnwcfAFUWz9FlP5c9LV0H5xw/IJ8Hh58Hv6MXEHtvjDE3EP9fB1EHHwWfB58Htw0RkbcBMzWXkcT3Xl8HUwcIIQ/fBB8AnwdX0N57lFKHu4EXD5XE3nsIIV8Hnx8AHwCfB5Fq0QBaa52DIZXElFJrLZEQvXf/Xwf/BR8AnwczFlvQf7XxQ/yMMZFbXwcfAB8Af0SRBZnTBjlnfzqXH1prsRY/kx1fBx8AHwCZBxEsOWc50+DWWl8690QTRGstn7FJXwcfAB8AOwUYY3MU/PdePxa7FhFgkcExd/9YARUAibEE/38fEJxzGGOcQnMBJBhjOWcZpHsIb713AQ7WWowxwK01c07eeyG+FUuE914DdVprGGMdSQEFeRhjrTWtNZQIUntvMXPeexhjhPdegyRaazlnoV8BhTxaa+89ay0QBkKFH6cAWmu1VvceXoM1pTqDy4OP3nuUgFKMMYwxUkqF08Ofc4E5tVZaa4UGQwInZQBFHkE/UkrBHhBCkNZaWmtXPt57QZEQlFJzTsVyvXc5ZmdjK0kAvXfFW8EecwhOzjlBmjFGlFKQ9145Z8EG3nvBGgR7b0GN1lpzTlKeSsEcxwxZKV09e2/FZgC9dxhjc07vPYFBm601zjkQQkcAQDFGc073XscKnJhzWmtvOk1PnHPHhYHBA1pr917WWkMA/8U+yypJDPsefwkjM+EEPwp/PwDrDyEAPwM/AD8AMQy9+He9d6EvIwChAX8OLwAAaWR4MZAAAACgMDBkYhDgAARgADQgHOcBLGAB6QFUOEnrAXxU6wGkcOsBzJKM6wH0qOsBHMXrAQRE4eMB' $sFileBin = Binary ( _Base64Decode ( $sFileBin ) ) $sFileBin = Binary ( _LzntDecompress ( $sFileBin ) ) If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath ) If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\' Local $sFilePath = $sOutputDirPath & $sFileName If FileExists ( $sFilePath ) Then If $iOverWrite = 1 Then If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin ) Else Return SetError ( 0, 0, $sFileBin ) EndIf EndIf Local $hFile = FileOpen ( $sFilePath, 16+2 ) If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin ) FileWrite ( $hFile, $sFileBin ) FileClose ( $hFile ) Return SetError ( 0, 0, $sFileBin ) EndFunc ;==> Loadinggifanimation_60X60Avi() Func MainIco ( $sFileName, $sOutputDirPath, $iOverWrite=0 ) ; Code Generated by BinaryToAu3Kompressor. Local $sFileBin = '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' $sFileBin &= 'tnj9AwgQhsa3WAEB/wkcT3T2ADF3cQMPf7sfdw38AzB59wNwiAMgL8WzAALzXBGN0HsR/AOLsIpwAgGyAgUwR7cHxCIycgAJTnT/A/oXHPv/MXeyZbiKCEtuofFq/wISG/BO+f8DDXYi/TICMQMNc6r/g/Bu9ANv/wUtQ7IASA58uPoDDlf7IwwEapxwCnL/D4LAwbJaAx0r/whwmLBVEfIDBz5c9wNhi+xwDEVkvf8mPalxk/kFcIjfOxRVd9EUQMBXTg+Ew/3yHP8DAz8AtR6Ky/4bSGECYPE7F0FXTxBHAGO/Gl2A2RxeFoE/ADgAGzACEkpn4MQbRFpbtNsPAA8ABw8AsQMgTA==' $sFileBin = Binary ( _Base64Decode ( $sFileBin ) ) $sFileBin = Binary ( _LzntDecompress ( $sFileBin ) ) If Not FileExists ( $sOutputDirPath ) Then DirCreate ( $sOutputDirPath ) If StringRight ( $sOutputDirPath, 1 ) <> '\' Then $sOutputDirPath &= '\' Local $sFilePath = $sOutputDirPath & $sFileName If FileExists ( $sFilePath ) Then If $iOverWrite = 1 Then If Not Filedelete ( $sFilePath ) Then Return SetError ( 2, 0, $sFileBin ) Else Return SetError ( 0, 0, $sFileBin ) EndIf EndIf Local $hFile = FileOpen ( $sFilePath, 16+2 ) If $hFile = -1 Then Return SetError ( 3, 0, $sFileBin ) FileWrite ( $hFile, $sFileBin ) FileClose ( $hFile ) Return SetError ( 0, 0, $sFileBin ) EndFunc ;==> MainIco()