SWF To Image library is an ActiveX/NET library for converting SWF (flash) movies into BMP, JPEG, GIF image files



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: