2

假设我有一个 Flash 网站,您可以在其中创建头像和一些动作。

有没有办法用服务器端语言将它们保存到动画 GIF 中?(首选php)

我环顾四周,我所拥有的只是使用 Flash 软件本身的方法。有人试过这个吗?

提前致谢。

4

3 回答 3

3

尝试:

AS3 GIF 动画编码类 0.1 [ by Thibault Imbert ]

http://www.bytearray.org/?p=93

于 2009-01-21T10:01:55.597 回答
1

有趣的问题。应该可以将动画的帧作为位图数据发送到服务器并在服务器上组装一个动画 gif。您可能希望动画非常短并且分辨率非常低才能正常工作。

一些起点:

于 2009-01-20T12:57:52.217 回答
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 回答