2009-01-20 27 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