Экспорт Flash-фильма в загружаемый анимированный GIF на стороне сервера - PullRequest
2 голосов
/ 20 января 2009

Допустим, у меня есть Flash-сайт, на котором вы можете создать аватар и немного движения.

Есть ли способ сохранить их в анимированный GIF с серверным языком? (php является предпочтительным)

Я огляделся по сторонам, и все, что у меня есть, это способы сделать это с помощью самой программы Flash. Кто-нибудь пробовал это?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 21 января 2009

Попробуйте:

AS3 GIF-кодирование анимации класса 0.1 [Тибо Имбер]

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

1 голос
/ 21 января 2009

Это зависит от того, как именно вы создаете аватар во 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());
?>
1 голос
/ 20 января 2009

Интересный вопрос. Должна быть возможность отправлять кадры анимации в виде растровых данных на сервер и собирать анимированный GIF-файл на сервере. Вы, вероятно, хотите, чтобы анимация была довольно короткой, а разрешение достаточно низким, чтобы это работало хорошо.

Некоторые отправные точки:

...