das_weezul
das_weezul

Reputation: 6142

Render Flash (SWF) frame as image (PDF,PNG,JPG)

I would like to write a python script that takes a bunch of swf files and renders them to individual image files.

Each swf file has just one frame (text, pictures etc.) and no animations at all. I have already tried the render command from the swftools toolset (The windows version), but the resolution of the resulting image is too low.

So what I need is:

A command line tool (Windows/Linux) or a python library which renders one frame from a swf to a bitmap or better to something like a PDF (It would be cool if the text data could be retained). It would be great if the target resolution/size could be set manually.

Thanks in advance!

Upvotes: 7

Views: 11399

Answers (3)

Basil Gello
Basil Gello

Reputation: 61

Sometimes SWFRender is stuck at very heavy files, especially when producing 300dpi+ images. In this case Gnash may help:

gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf

here we dump a last frame of a movie to file output.png disabling sound processing and exiting after the frame is rendered. Also we can specify the scale factor here or use

-j width -k height

to specify the exact size of resulting image.

Upvotes: 6

das_weezul
das_weezul

Reputation: 6142

I'm sorry to answer my own question, but I found an undocumented feature of swfrender (part of the swftools) by browsing through the sources.

swfrender path/to/my.swf -X<width of output> -Y<height of output>
-o<filename of output png>

As you might have guessed the X option lets you determine the width (in pixels) of the output and Y does the same for the height. If you just set one parameter, then the other one is chosen in relation to the original height-width-ratio (pretty useful)

That does the trick for me but as Zarate offered a solution that might be even better (I'm thinking of swf to PDF conversion) he deserves the credits.

Cheers

Upvotes: 11

Juan Delgado
Juan Delgado

Reputation: 2030

You could for example build an AIR app that loads each SWF, takes the screenshot and writes it to a file.

The thing is you'll need to kick off something to do the render and, as far as i know, you can't do that without the player or some of its Open Source implementation.

I think your best bet is going AIR, the SDK is free and cross-platform. If you are used to python, the AS3 necessary should be easy enough to pick up.

HTH,

J

Upvotes: 4

Related Questions