Экспорт Flash-ролика в загружаемый анимированный GIF, на стороне сервера

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

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

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

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


person andyk    schedule 20.01.2009    source источник


Ответы (3)


Пытаться:

AS3 GIF Animation Encoding Class 0.1 [от Thibault Imbert]

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

person Iain    schedule 21.01.2009

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

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

person Kristian J.    schedule 20.01.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());
?>
person David Hanak    schedule 20.01.2009
comment
Поправьте меня, если я ошибаюсь, но похоже, что вы можете использовать свой код только в том случае, если у вас есть доступ к оригинальным гифкам. Как вы можете скопировать флэш-видео и превратить его в гифку? - person Theopile; 25.01.2011
comment
Ты прав. Я предположил, исходя из вопроса, что это не будет препятствием. - person David Hanak; 01.02.2011