呈现SWF到PNG或其他图像格式

我怎样才能在Linux上渲染一个SWF到图像文件? 我需要能够加载其他的SWF到SWF并运行动作代码。

它甚至可能在Linux上? 我需要从PHP做到这一点,如果我不得不使用命令行工具。

从swftools swfrender适用于基本的SWF文件。

swfdec-thumbnailer gnome的 swfdec-thumbnailer虽然只能得到swf的第一帧,

要使用swfdec从swf获取任何帧,请参阅以下邮件列表文章中的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

另请参阅以下关于命令行管道的指南 。

为了从PHP调用外部程序,请使用此处记录的exec命令。

请注意,出于安全原因,为安全起见,使用另一个命令(如escapeshellcmdescapeshellarg传递给exec参数非常重要。

一旦转换为单帧或全帧图像格式,就无法运行动作脚本。 其他非GNU / Linux工具支持从SWF中导出动作脚本。

如果您要导出到PNG的SWF对于其他工具来说太复杂了,您可以使用Flash插件或GnashXvfb以及屏幕捕获软件来捕获SWF的图像帧或avi等视频格式。 然后你可以从视频格式中提取图像。

这个虚拟framebuffer方法将支持复杂的SWF文件,但是如果你想捕捉一组鼠标/键盘,需要使用Gnash,Xvfb和Screen Capture,或者浏览器,Xvfb和seleniumium,与SWF的交互。

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

另请参阅下面的StackOverFlow问题,您提出的问题是重复的

  • 将SWF转换为PNG
  • 将Flash(SWF)帧渲染为图像(PDF,PNG,JPG)
  • SWF使用PHP来形象(jpg,png,…)

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

您可以使用Xvfb (X11服务器)这样的工具,并在其中运行独立的Flash播放器投影机(您可能需要安装一堆32位库),然后使用导入等屏幕捕获工具捕获屏幕并裁剪大小。

我发现这个页面在Linux渲染swf屏幕截图很有帮助。 它也说,你可以使用gnash来做到这一点,但gnash不适用于Flash Player 9+。

尝试这个空气应用http://swfrenderer.kurst.co.uk

它逐帧渲染swf