2009-01-20 25 views
2

假设我有一个Flash网站,您可以在其中创建化身和一些动作。将Flash电影导出为可下载的动画GIF,服务器端

有没有办法将这些保存到带有服务器端语言的动画GIF中? (PHP是首选)

我环顾四周,我已经得到的所有方法都是用Flash软件本身来做的。有人试过这个吗?

在此先感谢。

回答

1

这取决于你究竟是如何在Flash中创建的化身。巧合的是,我的小组开发了一个这样的演示应用程序。它被称为FunIcons,你可以选择一个角色,然后通过用鼠标在脸上画一条路径来创建一个动画(按住鼠标按钮来做),然后点击“保存”按钮,你将会用刚刚绘制的序列获取动画gif。

诀窍很简单:服务器端的PHP脚本需要构建动画的GIF文件序列,并从中构建动画GIF。下面是脚本本身:

<?php 
    header ("Content-type: image/gif"); 
    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
    header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
    header ("Pragma: no-cache");       // HTTP/1.0 
    header ("Content-Disposition: attachment; filename=\"funicons.gif\""); 

    require_once "GifBuilder/GIFEncoder.class.php"; 

    $path = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"]; 
    $i = strrpos($path, "/"); 
    $path = substr($path, 0, $i+1); 

    $images = split(",", $_REQUEST["images"]); 
    $prevUrl = ""; 
    while (list ($key, $val) = each($images)) 
    { 
     if (substr($val, 0, strlen($path)) == $path) $val = substr($val, strlen($path)); 
     if ($val == $prevUrl) 
     { 
      $delay[count($delay)-1] += 10; 
     } else { 
      $frames[] = file_get_contents($val); 
      $delay[] = 10; 
      $prevUrl = $url; 
     } 
     @set_time_limit(30); 
    } 
    $gif = new GIFEncoder ($frames, $delay, 0, 2, -1, -1, -1, "bin"); 
    print($gif->GetAnimation()); 
?> 
+0

纠正我,如果我错了,但看起来你可以只有使用你的代码,如果你有访问的原始GIF。你怎么能“撕掉”一个Flash视频并将它变成gif? – Theopile 2011-01-25 19:58:53

+0

你是对的。基于这个问题,我假定这不会成为障碍。 – 2011-02-01 14:13:04