2

アバターとモーションを作成できる Flash Web サイトがあるとします。

それらをサーバー側言語でアニメーション GIF に保存する方法はありますか? (phpがおすすめです)

私は周りを見回しましたが、私が持っているのは、Flash ソフトウェア自体でそれを行う方法だけです。誰もこれを試しましたか?

前もって感謝します。

4

3 に答える 3

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());
?>
于 2009-01-20T22:08:31.263 に答える
1

興味深い質問です。アニメーションのフレームをビットマップ データとしてサーバーに送信し、サーバー上でアニメーション GIF を組み立てることができるはずです。これがうまく機能するには、おそらくアニメーションをかなり短くし、解像度をかなり低くする必要があります。

いくつかの出発点:

于 2009-01-20T12:57:52.217 に答える