检测.swf是否具有透明背景


Detect if .swf has transparent background

有没有办法在PHP,Python或Java中以编程方式做到这一点?

用例:

  • 用户通过上传表单上传.swf。
  • 检测它是否具有透明背景。
  • 如果是这样,请将其更改为其他内容,例如白色。

这很难确定,因为所有 SWF 实际上都是透明的(或者它们都可以是透明的)——只是它们可以包含覆盖整个舞台的形状,这使得它们看起来不透明。

若要以编程方式确定这一点,需要遍历 SWF 中的每个形状并查看其边界。但是,这还不够,因为 ActionScript 块可以更改任何形状,并且可以在运行时创建新形状。

但实际上,使它们透明是一项艰巨的任务。由于您要确保存在不透明,因此您可以在显示时处理此问题 - 在对象或嵌入标签后面放置彩色div。

可能不可能。 我建议在上传表单上勾选复选框"此 Flash 应用程序在透明背景下看起来最好"。

这是一个闪存应用程序,具有- 开始透明的背景- 一个滑块,让你调整不透明度

如您所见,不可能说"透明"或"不透明"

据我所知,您无法获得 swf 文件的背景 alpha(透明度)。 如果我是你会怎么做 将上传的 SWF 放入容器 SWF(将上传的 SWF 加载到其中),该容器只有您选择的背景颜色。

这个链接中曾经有一个php swf阅读器。但我也没有在其中看到任何阿尔法信息。

Flash 是一堆编译的二进制数据。您也许能够找到第三方库,该库可以反编译闪存文件并从根电影场景中获取一些数据,但这在很大程度上是一个延伸。正如其他人所建议的那样,上传期间的复选框将是最好的选择。

我认为

您可以阅读放置.swf的.html,看看是否有一个名为"wmode"的参数并设置为"透明"

如果是这种情况,你可以获取html文件并使用Python,Java或PHP读取它。

这是一个丑陋的解决方案,但这是一个解决方案。

PS:对不起,我的英语不好。

swf 文件由在浏览器内部或外部运行的插件处理。没有办法判断某个闪光灯是否有透明的背景......我想你可以假设所有这些都是透明的。