Jump to content
trancexx

GIF Animation

Recommended Posts

One more question. From time to time I receive this error message when I shut down my program:

"R6016 - not enough space for thread data"

http://support.microsoft.com/kb/126709/en-us

And I "think" it started when I've implemented your UDF. Might this be related to your ASM calls?

Share this post


Link to post
Share on other sites

One more question. From time to time I receive this error message when I shut down my program:

"R6016 - not enough space for thread data"

http://support.microsoft.com/kb/126709/en-us

And I "think" it started when I've implemented your UDF. Might this be related to your ASM calls?

As far as I know that's impossible for the GIF UDF to cause.

Does your app Run() something? Do you use msvcrt.dll? Both of those are more likely to cause the issue you describe.


♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites

Thanks for the reply. Yes, I use "msvcrt.dll" in that program... well, if I look at the "Resolution" in the article, there seems to be nothing I can do about it (?), at least not clear to me.

Share this post


Link to post
Share on other sites

Is it possible to pass in some way to the _GUICtrlCreateGIF function a handle to an HBITMAP instead of a filename or a resource?
for example I would like to pass the handler returned by the _ScreenCapture_Capture function used without filename. (I have seen that if I save to file a portion of captured screen then I can pass that file to _GUICtrlCreateGIF, but I had not success trying to pass handler instead)

thanks


small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

Share this post


Link to post
Share on other sites

Had the need to be able to animate a .gif, did a quick search, found this, is working great.

thank you trancexx


rsRVpv.gif

Share this post


Link to post
Share on other sites

@tracexx

'GIFAnimations.au3' cool project

please tell me how to convert a gif image into binary code ?

>_<

http://prntscr.com/4h9bjl

image.gif into --> Func _LOGOBin()

Local $FileName = "0x474946383961B400B400F7FF00B591DBC2C2C2DAEDFFCEE7FF7DA9FFB3CCE6999999B3B3CCB2CCCCB692B6E9E9E96699CC666666DDDDDDCFADCFF9F9"
$FileName &= "F9F5F5F5ECD9ECAAAAE69393DBE3F1F1336599E1E1F14B787866336655AAAA67678ED1D1D2333366A3C2E1BBBBBB4A77A5A4A4C25C85ADCECEFFF2F2" bla bla bla.... code
Edited by johanser

Share this post


Link to post
Share on other sites

Hi johanser

you could give a try to Wakillon's >BinaryToAu3Kompressor

with it you can create the code of the compressed gif and then copy only the binary data and  _Base64Decode function from the generated list to your script
here a simple example:

#AutoIt3Wrapper_Au3Check_Parameters=-w 1 -w 2 -w 3 -w 4 -w 5 -w 6

;.......script written by trancexx (trancexx at yahoo dot com)

#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include "GIFAnimation.au3"
; following code grabbed from Wakillon's BinaryToAu3Kompressor generated code ------
    Global $sFile = "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"
    $sFile &= "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"
    $sFile &= "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"
    $sFile &= "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"
    $sFile = Binary ( _Base64Decode ( $sFile ) )

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 ()
 ; ------ end of grabbed code -------

Opt("GUICloseOnESC", 1); ESC to exit
Opt("MustDeclareVars", 1)
#cs
Global $sTempFolder = @TempDir & "\GIFS"
DirCreate($sTempFolder)

Global $sFile = $sTempFolder & "\Dance.gif"
If Not FileExists($sFile) Then
    TrayTip("GIF Download", "Please wait...", 0)
    InetGet("http://i241.photobucket.com/albums/ff141/trancexx_bucket/Dance.gif", $sFile)
    TrayTip("", "", 0)
EndIf

If Not FileExists($sFile) Then
    MsgBox(262192, "Download", "Download failed!")
    Exit
EndIf
#ce
; Get dimension of the GIF
Global $aGIFDimension = _GIF_GetDimension($sFile)
; Make GUI
Global $hGui = GUICreate("GIF Animation", $aGIFDimension[0], $aGIFDimension[1], -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))

; GIF job
Global $hGIF = _GUICtrlCreateGIF($sFile, "", 0, 0)
GUICtrlSetTip(-1, "ESC to exit")

; Make GUI transparent
GUISetBkColor(345) ; some random color
_WinAPI_SetLayeredWindowAttributes($hGui, 345, 255) ; making the GUI transparent
_WinAPI_SetParent($hGui, 0)

; Show it
GUISetState()

; Loop till end
While 1
    If GUIGetMsg() = - 3 Then Exit
WEnd

small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

Share this post


Link to post
Share on other sites

Hi

I get this ( error: can't open include file "GIFAnimation.au3".) when i try to run your script. Not sure why I have version 3.3.13.19

thanks for your help.

elzie

Share this post


Link to post
Share on other sites

Hi

I get this ( error: can't open include file "GIFAnimation.au3".) when i try to run your script. Not sure why I have version 3.3.13.19

thanks for your help.

elzie

 

You have to download the file "GIFAnimation.au3" and save it to the same path of your script.

It's included in the GIFAnimation_2.1.2.zip file along with some nice examples.

Download it from the link provided in the >first post indicated by the sentence "Download from here if you want to impress chicks: http://code.google.com/p/gif-animation/downloads/list"


small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

Share this post


Link to post
Share on other sites

Thanks very much.

Elzie

you are welcome :)


small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

Share this post


Link to post
Share on other sites
On 6/3/2009 at 3:38 PM, trancexx said:

No it doesn't speak, I lied. That is impossible.

 

It's about setting animated GIF (and every other type of images) to a GUI control.

 

How is this done for animated GIF? Few simple steps:

- created ImageList of GIF Bitmaps retrieved from gif file/resource

- created Pic control

- every now and then another image is displayed. This is determined by frame delay time - see gif specification somewhere.

That's it.

 

All that takes time and could potentially block our gui/script. That's why flying assembly is used. Animation is done in another thread different from one AutoIt's code is executed in. Nothing stops animation but you.

Animation works both for x64 and x86. Also it works for all kind of images not only GIFs. That means you can use it to display PNGs, BMPs, JPGs, etc... All of them from resources too.

 

 

Example:

 

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "GIFAnimation.au3"

Opt("MustDeclareVars", 1)

; Start by choosing GIF to display
Global $sFile = FileOpenDialog("Choose Image", "", "(*.gif;*.png;*.jpg;*.tiff;*.bmp;*.jpeg)", -1, "")
If @error Then Exit

; Make GUI
Global $hGui = GUICreate("GIF Animation", 500, 500, -1, -1, $WS_OVERLAPPEDWINDOW)

; Add some buttons
Global $hButton = GUICtrlCreateButton("&Pause animation", 50, 450, 100, 25)
Global $hButton1 = GUICtrlCreateButton("&Delete Control", 200, 450, 100, 25)
Global $hButton2 = GUICtrlCreateButton("&Open Image", 350, 450, 100, 25)

; Make GIF Control
Global $hGIF = _GUICtrlCreateGIF($sFile, "", 10, 10)
If @extended Then GUICtrlSetState($hButton, $GUI_DISABLE)
GUICtrlSetTip($hGIF, "Image")

; Additional processing of some windows messages (for example)
GUIRegisterMsg(133, "_Refresh") ; WM_NCPAINT
GUIRegisterMsg(15, "_ValidateGIFs") ; WM_PAINT

Global $iPlay = 1

; Show it
GUISetState()

; Loop till end
While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $hButton
            If $iPlay Then
                If _GIF_PauseAnimation($hGIF) Then
                    $iPlay = 0
                    GUICtrlSetData($hButton, "Resume animation")
                EndIf
            Else
                If _GIF_ResumeAnimation($hGIF) Then
                    $iPlay = 1
                    GUICtrlSetData($hButton, "Pause animation")
                EndIf
            EndIf
        Case $hButton1
            _GIF_DeleteGIF($hGIF)
        Case $hButton2
            $sFile = FileOpenDialog("Choose gif", "", "(*.gif;*.png;*.jpg;*.tiff;*.bmp;*.jpeg)", -1, "", $hGui)
            If Not @error Then
                _GIF_DeleteGIF($hGIF); delete previous
                $hGIF = _GUICtrlCreateGIF($sFile, "", 10, 10)
                If @extended Then
                    GUICtrlSetState($hButton, $GUI_DISABLE)
                Else
                    GUICtrlSetState($hButton, $GUI_ENABLE)
                EndIf
                GUICtrlSetTip($hGIF, "Image")
                $iPlay = 1
                GUICtrlSetData($hButton, "Pause animation")
            EndIf
    EndSwitch
WEnd


Func _Refresh($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam
    _GIF_RefreshGIF($hGIF)
EndFunc ;==>_Refresh

Func _ValidateGIFs($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam
    _GIF_ValidateGIF($hGIF)
EndFunc ;==>_ValidateGIFs

 

It should be 0% cpu.

 

 

Download from here if you want to impress chicks: http://code.google.com/p/gif-animation/downloads/list

 

There are 8 examples in there. GIF files are downloaded automatically if some example script needs it. Mostly from photobucket.com. Some examples work without classic download. Required data is get with InetRead(). That's mighty cool.

So, download, open ZIP, grab folder inside and place it where you want. Run examples and that's it.

 

Word or two about main function, _GUICtrlCreateGIF(). It can handle all sorts of input. Will display Images that are passed as binary, resource identifiers, strings, file names, ... everything. If it's valid image all works. For example, all this is valid:

 

; Pass GIF File path/name
_GUICtrlCreateGIF("Some.gif", "", 10, 10)

; Binary data
_GUICtrlCreateGIF($bGIF, "", 10, 10,)

; PE Resource (file GIF.dll, Type: GIF, Name: 4)
_GUICtrlCreateGIF("GIF.dll", "GIF;4", 10, 10, 100, 120)

; PE Resource (file @AutoItExe, Type: RES, Name: BLAH, Language: 1033)
_GUICtrlCreateGIF(@AutoItExe, "RES;BLAH;1033", 10, 10)

; PE Resource (file "explorer.exe", Type: 2, Name: 6801)
_GUICtrlCreateGIF("explorer.exe", "2;6801", 10, 10) ;<- BITMAP

; PE Resource (file @AutoItExe, Type: RC_DATA, Name: PNG)
_GUICtrlCreateGIF(@AutoItExe, "10;PNG", 10, 10)

; GIF string
_GUICtrlCreateGIF(FileRead("Some.gif"), "", 10, 10)

 

 

 

____________________________________________

WOWWWWW you are incredible O.O i was doing something like this then i found your job, it really help me thanks a lot you are amazing :D

Share this post


Link to post
Share on other sites

Hey, trancexx, thanks enormously for this mind-bogglingly great UDF!  Until I found this, I had given up hope of displaying animated gifs.

Unfortunately, I have a problem I need help with.  Believe me, I'm one of those who will spend days trying to figure stuff out on my own, but now I'm finally stumped.

Here's my problem: I want to use your UDF to display images, but often I need to resize/scale the images to fit in the rectangle I have in my GUI. Although it appears to be an internal function in your UDF, I'd like to be able to use your _GIF_ResizeBitmap() func for that. But it requires one form of bitmap, and I don't know how to get/create/load the proper type of bitmap from an image.

I can see from reading the code in your UDF, there's an undocumented ability to pass some kind of binary data as the first parameter to _GUICtrlCreateGIF() and _GUICtrlSetGIF(), instead of passing a file path. But what the hollerin' heck does that binary parameter have to look like?

Is it a regular bitmap, such as produced by _GDIPlus_ImageGetGraphicsContext()? It doesn't seem to be, but I could be doing much wrong in my first hesitant steps down this GDI+/graphic manipulation road (and yes, I've read a few GDI+ tutorials and some examples on the forum here).

Now, I'm the first to admit that all this GDI+ stuff is brand new to me, and if I said I grasped it all, I would be a liar. But I'm tryin' like crazy. Would you please be so kind as to help me out here?

Thanks!

 

Edited by Mbee
Revised after trying other approaches

Share this post


Link to post
Share on other sites

Well, I've spent quite a bit of time now reading and re-reading about the GDIPlus functions (Microsoft as well as AutoIt info) as well as your code, trancexx, and I've made a lot of progress.

But I'm still stumped!

My last major rewrite was to try to pass a Scan0 pointer to _GUICtrlCreateGIF()  instead of a file path (and your code does permit some binary data to be passed instead of a file path), but it hates that too!

Aargh!

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...