将swf渲染为png或其他图像格式

时间:2012-03-09 21:57:43

标签: linux image png flash converter

我怎样才能在linux上将swf呈现给图像文件? 我需要能够将其他swfs加载到该swf并运行actionscript代码。

甚至可以在linux上使用吗?我需要从PHP做到这一点,如果我必须使用命令行工具,这很好。

3 个答案:

答案 0 :(得分:16)

来自swftools

swfrender适用于基本SWF文件。

来自swfdec-gnome

swfdec-thumbnailer虽然只能获得swf的第一帧。

要使用swfdec从swf获取任何帧,请参阅以下邮件列表post中的C代码段。

来自gnash

gnash也适用于gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf,是swf的最后一张图片。

来自ffmpeg

ffmpeg也适用于某些swf格式ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

另请参阅以下guide以获取命令行管道。

为了从php调用外部程序,您可以使用exec记录的exec命令。

请注意,出于安全原因,出于安全原因,使用escapeshellcmdescapeshellarg等其他命令转义传递给Gnash的参数非常重要。

无论是单帧还是全帧,转换为图像格式后,都无法运行动作脚本。其他非GNU / Linux工具支持从SWF导出动作脚本。

如果要导出到PNG的SWF对于其他工具而言过于复杂,那么您可以使用Flash插件或Xvfb和{{1}}以及屏幕捕获软件捕获图像帧SWF或像avi这样的视频格式。然后,您可以从视频格式中提取图像。

这个虚拟帧缓冲区方法将支持复杂的SWF文件,但是如果你想捕获某个特定的一组,你需要使用Gnash和Xvfb和Screen Capture,或浏览器,Xvfb和Selenium需要很多工作。鼠标/键盘与SWF的交互。

带有和不带Virtual FrameBuffer的Gnash应该在导出之前加载ActionScript,但是可能会遇到复杂的ActionScript问题。带有Virtual Framebuffer的Flash插件将在导出之前加载ActionScript。

另请参阅以下StackOverFlow问题,您提出的问题与

重复

答案 1 :(得分:1)

这是我最终使用的解决方案。

您可以使用Xvfb(X11服务器)之类的工具并在其中运行独立的Flash播放器投影仪(您可能需要安装一堆32位库),然后使用屏幕捕获实用程序,如{ {3}}捕获屏幕并将其裁剪为大小。

我发现import在linux中渲染swf屏幕截图很有帮助。它还说你可以使用gnash来做到这一点,但gnash不适用于flash player 9 +。

答案 2 :(得分:1)

试试这个空中申请http://swfrenderer.kurst.co.uk

逐帧渲染swf