将SWF转换为PNG

15
我希望能够通过PHP将1帧SWF文件转换为PNG。我可以使用命令行工具完成此操作。如何实现?我找到了一个ActiveX库,但那似乎是多余的一层。我还看到Gnash似乎有一个PNG输出类,但我无法在没有自己深入编码的情况下从命令行访问它。是否有其他聪明的解决方案可用?谢谢!编辑:澄清一下,这不是我只想做一次的任务。我想让PHP脚本随时执行此任务。谢谢!另一个编辑:再澄清一下。这不是用户在Flash中绘制图画的情况。我正在下载原始的1帧SWF文件,并希望保存PNG副本以减少下载时间。这样的任务可能吗?再次感谢!
4个回答

23
你可以使用 swftools
swfrender file.swf -X 像素大小 -Y 像素大小 -o 输出文件名.png 如果只有 -X 或 -Y 参数之一被指定,则比例将被保持。

奇怪,我查了swftools但不知何故错过了那个完全符合我需求的工具。我今天稍后会再检查一下 :) - Matchu
似乎立即就能工作 - 想想我已经安装了这个!谢谢! - Matchu
1
不幸的是,这似乎在透明背景下效果不佳。不过这是个很棒的工具。我们的一位离岸开发人员正在建议使用SWFToVideo,但需要花费1000美元购买许可证……:( 难过的表情 - Tanner Watson
"swfrender" 对我的测试案例有效,但遗憾的是没有选择渲染缩放因子的选项,因此我只能得到一个太小的渲染结果,其中文本部分无法辨认。 - Stefan Schmidt

2

我更喜欢从服务器端技术开始,然后尝试客户端技术,因为总会有恶意用户存在。但还是谢谢 - 我会记住的 :) - Matchu
2
本文的重点是截图是在Flash中进行的。此时,您可以对该图像进行任何操作。 - CookieOfFortune
PHP可以让你使用文件流将PNG写入服务器。它将使用Flash中的相同机制来编码.png数据,然后只需将字节数组发送到你的PHP方法即可。 - Myk

2

根据你所拥有的swf文件类型,你可以尝试使用命令行中的FFmpeg:

ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

"[swf @ 0x9b822c0]不支持压缩的SWF格式" - 糟糕。试图通过谷歌找到解决方法 - 显然我应该能够构建一个工具来解压它... - Matchu
1
有趣。现在PNG被列为ffmpeg的格式之一,但我仍然收到“找不到编解码器参数”的错误。我会继续努力。 - Matchu
看起来,ffmpeg 只能转换一些 swf 格式,这取决于它们包含了什么。 - o0'.
1
@Lo'oris:这就是为什么我的回答说它可能会根据.swf的类型而起作用。 - cOle2
我使用了 swfcombine 来解压缩 swf 文件,这样 avconv(ffmpeg 的衍生版本)就可以接受该文件并生成两个 PNG 图像。然而,这些图像并不是 swf 文件的渲染结果,而只是该文件中包含的两个图像,因此它对我来说更像是一个替代版的 swfextract - Stefan Schmidt

1

这让我点赞。在搜寻和测试了数小时之后,这是唯一可靠地将 SWF 导出为 png 序列并嵌入电影剪辑的方法。即使是 v1 AIR 应用程序仍可与 CS6 SWF 完美配合使用。 - indextwo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接