Экспорт Flash-фильма в загружаемый анимированный GIF-файл на стороне сервера
-
19-08-2019 - |
Вопрос
Допустим, у меня есть Flash-сайт, на котором можно создать аватар и какое-нибудь движение.
Есть ли способ сохранить их в анимированный GIF-файл с помощью серверного языка?(php предпочтителен)
Я осмотрелся, и все, что у меня есть, — это способы сделать это с помощью самого программного обеспечения Flash.Кто-нибудь пробовал это?
Заранее спасибо.
Решение
Другие советы
Интересный вопрос.Должна быть возможность отправлять кадры анимации в виде растровых данных на сервер и собирать на сервере анимированный gif.Вероятно, вам нужно, чтобы анимация была достаточно короткой и разрешение было достаточно низким, чтобы это работало хорошо.
Некоторые отправные точки:
Это зависит от того, как именно вы создаете аватар во 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());
?>