Hi,
weiß jemand wie ich mit Autoit ein animiertes GIF in einzelne Frames zerlegen und jeden Frame dann als separates Bild abspeichern kann?
mfg
chip
Hi,
weiß jemand wie ich mit Autoit ein animiertes GIF in einzelne Frames zerlegen und jeden Frame dann als separates Bild abspeichern kann?
mfg
chip
Du kannst die _GDIPlus_GIFAnim.au3 von hier benutzen.
Beispiel zum Extrahieren:
[autoit]
#AutoIt3Wrapper_Version=b
#include <Array.au3>
#include "_GDIPlus_GIFAnim.au3"
_GDIPlus_Startup()
Global $binGif = Binary(FileRead("BoingRed v2.1.gif"))
Global $hGIFImage = _GDIPlus_BitmapCreateFromMemory($binGif)
Global Const $iAnimDimCount = _GDIPlus_GIFAnimGetFrameDimensionsCount($hGIFImage), _
$tGUID = _GDIPlus_GIFAnimGetFrameDimensionsList($hGIFImage, $iAnimDimCount), _
$iAnimFrameCount = _GDIPlus_GIFAnimGetFrameCount($hGIFImage, $tGUID), _
$aFrameDelays = _GDIPlus_GIFAnimGetFrameDelaysFromBinFile($binGif, $iAnimFrameCount)
ConsoleWrite("Extracting " & Int($iAnimFrameCount) + 1 & " frames to disk and resizing each frame to 32x32 pixels..." & @CRLF)
[/autoit][autoit][/autoit][autoit]_GDIPlus_GIFAnimExtractAllFrames($hGIFImage, @ScriptDir & "\BoingRed v2.1_frames\BoingRed.gif", 85, 32, 32, 2, 1)
;~ FileWrite("c:\Temp\GIFAnim.delay.txt", _ArrayToString($aFrameDelays))
_GDIPlus_BitmapDispose($hGIFImage)
_GDIPlus_Shutdown()
ConsoleWrite("Done." & @CRLF)
Gruß,
UEZ
Hier ist eine Funktion enthalten, um einzelne Frames zu erhalten
http://www.autoitscript.com/forum/topic/96132-gif-animation/
Leider geht das Beispiel nicht UEZ. Kommt die Meldung:
""\_GDIPlus_GIFAnim.au3" (34) : ==> Variable used without being declared.:
Local Const $aResult = DllCall($__g_hGDIPDll, "int", "GdipImageGetFrameDimensionsCount", "handle", $hImage, "ulong*", 0)
Local Const $aResult = DllCall(^ ERROR"
Hast es mit der neusten Beta probiert? Eigentlich sollte es ab der Version 3.3.12.0 funzen.
Gruß,
UEZ
Habs hinbekommen, hatte auf dem Rechner an dem ich grade bin noch die alte 3.3.10. mit der aktuellen 3.3.12 geht es.