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

2019-03-20 06:12发布

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!

3条回答
Root(大扎)
2楼-- · 2019-03-20 06:28

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

查看更多
贼婆χ
3楼-- · 2019-03-20 06:40

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

查看更多
倾城 Initia
4楼-- · 2019-03-20 06:46

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.

查看更多
登录 后发表回答