SWF To Image library is a freeware
ActiveX/NET library for converting flash (SWF) files into BMP,
JPEG and GIF image files.
You are not a developer but looking for ready-to-use application? Check SWF To Image GUI (freeware)
Detailed description of custom parameters
(they are used with a filenames to help customize swf to image
conversion using SWF To image):
FORBID_INTERNAL_DOWNLOAD:// tells to let flash player plugin
download movie by itself
When movie loads XML or other data you may need to delay
load of the movie
You can set timeout in seconds (using PRELOAD prefix) and you
can also use 2 different approaches to detect when all data is
loaded:
Approach #1: If you are not able to recompile source SWF flash
movie:
========================================================================
DETECT_READY when library tries to detect objects loaded and then
convert frame into jpeg after all objects were loaded successfully
DETECT_READY:// - with this prefix library tries to detect
first object loaded and then go to conversion into image
DETECT_READY2://
DETECT_READY3://
...
DETECT_READY200:// - you can set number of object to wait for
before conversion
IMPORTANT NOTE: DETECT_READY prefix can not be used as standalone
prefix. It should be used with PRELOAD:// prefixes as they set
"timeout" time to go to conversion even if not object
were not loaded
Example 1: (wait for 2 objects, global timeout is 5 sec):
SWFToImage.InputSWFFileName = "PRELOAD5://PRELOAD_READY2://imageTest.swf"
Example 2: (wait for 1 object, global timeout is 2 sec):
SWFToImage.InputSWFFileName = "PRELOAD2://PRELOAD_READY://imageTest.swf"
How to detect how much objects movie is about to load?
-------------------------------------------------------
This is possible via a built-in hack:
Use GET_READY_TIMES:// prefix and library will return number
of objects actually loaded in the .ImageWidth property
Example (get number of objects actually loaded in SWF):
------
Set SWFToImage = CreateObject("SWFToImage.SWFToImageObject")
SWFToImage.InitLibrary "demo", "demo"
SWFToImage.InputSWFFileName = "PRELOAD7://GET_READY_TIMES://test.swf"
SWFToImage.ImageOutputType = 1
SWFToImage.Execute_Begin
SWFToImage.Execute_GetImage
SWFToImage.Execute_End
MsgBox "Number of Objects actually loaded=" & CStr(SWFTOImage.ImageWidth)
Approach #2: you can use FSCommand (calling in actionscript inside
your flash movie) to indicate that loading is completed
========================================================================
First insert the following actionscript code inside movie to indicate
that all data is ready and so loading is done: fscommand("SWFToImage_LoadingIsDone");
Then in code that uses SWFToImage library use the following
prefix:
USE_FSCOMMAND_TO_DETECT_LOADING_IS_DONE://
This prefix tells the library to wait for "SWFToImage_LoadingIsDone"
command from flash movie and then convert movie into image immediately
Example:
---------
SWFToImage.InputSWFFileName = "PRELOAD10://USE_FSCOMMAND_TO_DETECT_LOADING_IS_DONE://MovieDisplayPassedVar.swf?Variable1=Testing%20Value%20for%20parameter"
IMPORTANT: you should use PRELOAD prefix along with USE_FSCOMMAND_TO_DETECT_LOADING_IS_DONE
prefix so library will have a timeout setting for the conversion
(in example above it uses 10 seconds timeout setting)
Example (create a movie with actionscript command indicating
that loading is done. Code uses SWF Scout library to generate
SWF flash movie ):
W = 640
H = 480
FPS = 12
Set Movie = CreateObject("SWFScout.FlashMovie")
Movie.InitLibrary "demo","demo"
Movie.BeginMovie 0,0,W,H,1,FPS,6
Font = Movie.AddFont( "Arial",26,true,false,false,false,0)
Text= Movie.AddTextEdit ("edText","undefined",255,100,0,255,Font,10,70,500,120)
Movie.PlaceText Text,DepthForText ' place text
Movie.AddScript
Movie.SCRIPT_Compile "if(_root.Variable1!=undefined){edText=_root.Variable1;}else{edText
= 'Variable1 not set';};"
Movie.ShowFrame 1
Movie.AddScript
Movie.SCRIPT_GetUrl "FSCommand:SWFToImage_LoadingIsDone",
"" ' indicate loading is done
Movie.ShowFrame 1
Movie.EndMovie
Movie.SaveToFile "MovieDisplayPassedVar.swf"
Using fixed preload delay time:
====================================
PRELOAD:// - with this prefix flash movie is loaded with a little
delay
PRELOAD05:// - with this prefix flash movie is loaded with 500
ms delay
PRELOAD1:// - with this prefix flash movie is loaded with 1000
ms delay
PRELOAD15:// - with this prefix flash movie is loaded with 1500
ms delay
PRELOAD2:// - with this prefix flash movie is loaded with 2000
ms delay
PRELOAD25:// - with this prefix flash movie is loaded with 2500
ms delay
PRELOAD3:// - with this prefix flash movie is loaded with 3000
ms delay
PRELOAD35:// - with this prefix flash movie is loaded with 3000
ms delay
PRELOAD4:// - with this prefix flash movie is loaded with 4000
ms delay
PRELOAD45:// - with this prefix flash movie is loaded with 4500
ms delay
PRELOAD5:// - with this prefix flash movie is loaded with 5000
ms delay
PRELOAD55:// - with this prefix flash movie is loaded with 5500
ms delay
PRELOAD6:// - with this prefix flash movie is loaded with 6000
ms delay
PRELOAD65:// - with this prefix flash movie is loaded with 6500
ms delay
PRELOAD7:// - with this prefix flash movie is loaded with 7000
ms delay
PRELOAD75:// - with this prefix flash movie is loaded with 7500
ms delay
PRELOAD8:// - with this prefix flash movie is loaded with 8000
ms delay
PRELOAD85:// - with this prefix flash movie is loaded with 8500
ms delay
PRELOAD9:// - with this prefix flash movie is loaded with 9000
ms delay
PRELOAD95:// - with this prefix flash movie is loaded with 9500
ms delay
PRELOAD10:// - with this prefix flash movie is loaded with 10000
ms delay
PRELOAD150:// - with this prefix flash movie is loaded with 15000
ms delay
PRELOAD200:// - with this prefix flash movie is loaded with 20000
ms delay
Example Code (using fixed preload time)
-----------------------------------------
Set SWFToImage = CreateObject("SWFToImage.SWFToImageObject")
SWFToImage.InputSWFFileName = "PRELOAD1://movie_with_dynamic_data.swf"
SWFToImage.ImageOutputType = 1 ' set output image type to Jpeg
(0 = BMP, 1 = JPG, 2 = GIF)
SWFToImage.Execute_Begin ' start conversion
SWFToImage.FrameIndex = 1 ' set frame index
SWFToImage.Execute_GetImage
SWFToImage.SaveToFile "movie_with_dynamic_data.jpg"
SWFToImage.Execute_End ' end conversion
Example Code (switching library to use flash player engine
download engine instead of library built-in engine)
------------------------------------------------------------------------
Set SWFToImage = CreateObject("SWFToImage.SWFToImageObject")
SWFToImage.InputSWFFileName = "FORBID_INTERNAL_DOWNLOAD://PRELOAD1://movie_with_dynamic_data.swf?myparam=123"
SWFToImage.ImageOutputType = 1 ' set output image type to Jpeg
(0 = BMP, 1 = JPG, 2 = GIF)
Features:
Requirements:
Macromedia Flash plugin installed.