【问题标题】:Render swf to png or other image format将 swf 渲染为 png 或其他图像格式
【发布时间】:2012-03-09 21:57:43
【问题描述】:

如何在 linux 上将 swf 渲染为图像文件? 我需要能够将其他 swf 加载到该 swf 中并运行 actionscript 代码。

在Linux上甚至可能吗?我需要从 PHP 中完成,如果我必须使用命令行工具就可以了。

【问题讨论】:

标签: linux image png flash converter


【解决方案1】:

swfrender from swftools 适用于基本 SWF 文件。

swfdec-gnome 中的swfdec-thumbnailer 有效,尽管它只获取 swf 的第一帧。

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

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

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

有关命令行管道,另请参阅以下guide。

为了从 php 调用外部程序,您使用 exec 命令记录在 here。

请注意,出于安全原因,出于安全原因,使用 escapeshellcmd 或 escapeshellarg 等另一个命令转义传递给 exec 的参数很重要。

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

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

这种虚拟帧缓冲方法将支持复杂的 SWF 文件,虽然它需要做很多工作,因为您需要使用 Gnash 和 Xvfb 和 Screen Capture,或者浏览器,Xvfb 和 Selenium,如果您想捕获特定的一组鼠标/键盘与 SWF 的交互。

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

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

【讨论】:

  • 除了我要求 swf 中的动作脚本可以运行外,我知道 swfrender 不能满足我的要求。其他的是否允许 actionscript 运行?
  • 一旦导出为 png,无论使用何种工具,生成的 png 图像或 mng 动画都无法运行 actionscript。
  • 不,我的意思是在导出 Flash 电影之前,它需要运行代码来显示我想要的内容。
  • @Appleman1234:很好的建议。任何提示,如何从 SWF 渲染到 PDF?我可以通过图像来做到这一点,但最好将字体和标签作为“文本”转换为 PDF,而不进行光栅化。
  • 通常一个单独的问题应该是一个单独的问题,据我所知,如果不使用官方 Adob​​e 软件将 SWF 转换为 PDF 而不光栅化为图像,即使那样它们也会光栅化如果未检测到相关标记类型的文本或 Postscript,则转至图像。
【解决方案2】:

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

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

我发现this page 在 linux 中渲染 swf 屏幕截图很有帮助。它还说您可以使用 gnash 来执行此操作,但是 gnash 不适用于 flash player 9+。

【讨论】:

    【解决方案3】:

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

    逐帧渲染swf

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2015-02-22
      • 2014-07-30
      • 1970-01-01
      • 2011-09-11
      • 2015-06-23
      相关资源
      最近更新 更多