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

时间:2011-05-13 06:41:42

标签: java php python flash

有没有办法在PHP,Python或Java中以编程方式执行此操作?

用例:

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

6 个答案:

答案 0 :(得分:4)

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

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

但实际上,让它们透明是一项艰巨的任务。由于你想确保它们是不透明的,你可以在显示时处理它 - 在对象后面放一个彩色div或嵌入标签。

答案 1 :(得分:3)

可能不可能。我建议在上传表单上选中一个复选框“此Flash应用看起来最适合透明背景”。

Here是一款Flash应用 - 开始的透明背景 - 一个可以调整不透明度的滑块

正如你所看到的,不可能说“透明”或“不透明”

答案 2 :(得分:1)

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

this link曾经有一个php swf阅读器。但我也没有看到任何阿尔法信息。

答案 3 :(得分:1)

Flash是一堆已编译的二进制数据。你可能能够找到第三方库,它可以解组flash文件并从根电影场景中获取一些数据,但这是一个很大的延伸。正如其他人所推荐的那样,上传期间的复选框将是最佳选择。

答案 4 :(得分:0)

我认为你可以阅读放置.swf的.html,看看是否有一个名为“wmode”的参数并设置为“透明”

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

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

PS:抱歉我的英语不好。

答案 5 :(得分:0)

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