Exportar película Flash a GIF animado descargable, del lado del servidor
-
19-08-2019 - |
Pregunta
Digamos que tengo un sitio web Flash donde puedes crear un avatar y algo de movimiento.
¿Hay alguna manera de guardarlos en un GIF animado con un lenguaje del lado del servidor? (se prefiere php)
He mirado alrededor y todo lo que tengo son formas de hacerlo con el software Flash. ¿Alguien ha intentado esto?
Gracias de antemano.
Solución
Prueba:
AS3 Animación GIF Codificación Clase 0.1 [por Thibault Imbert]
Otros consejos
Pregunta interesante. Debería ser posible enviar los cuadros de la animación como bitmapdata al servidor y ensamblar un gif animado en el servidor. Es probable que desee que la animación sea bastante corta y que la resolución sea bastante baja para que esto funcione bien.
Algunos puntos de partida:
Depende exactamente de cómo creas el avatar en Flash. Por coincidencia, mi grupo desarrolló una aplicación de demostración que hace exactamente eso. Se llama FunIcons , puede seleccionar un personaje y luego crear un animación dibujando una ruta en la cara con el mouse (presione y mantenga presionado el botón del mouse para hacerlo), y luego haciendo clic en "Guardar" , obtendrá un gif animado con la secuencia que acaba de trazar.
El truco es simple: un script PHP en el lado del servidor toma la secuencia de archivos GIF que construyen la animación, y construye un GIF animado a partir de ellos. Aquí está el script en sí:
<?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://" . Depende exactamente de cómo creas el avatar en Flash. Por coincidencia, mi grupo desarrolló una aplicación de demostración que hace exactamente eso. Se llama FunIcons , puede seleccionar un personaje y luego crear un animación dibujando una ruta en la cara con el mouse (presione y mantenga presionado el botón del mouse para hacerlo), y luego haciendo clic en "Guardar" , obtendrá un gif animado con la secuencia que acaba de trazar.
El truco es simple: un script PHP en el lado del servidor toma la secuencia de archivos GIF que construyen la animación, y construye un GIF animado a partir de ellos. Aquí está el script en sí:
<*>SERVER["HTTP_HOST"] . Depende exactamente de cómo creas el avatar en Flash. Por coincidencia, mi grupo desarrolló una aplicación de demostración que hace exactamente eso. Se llama FunIcons , puede seleccionar un personaje y luego crear un animación dibujando una ruta en la cara con el mouse (presione y mantenga presionado el botón del mouse para hacerlo), y luego haciendo clic en "Guardar" , obtendrá un gif animado con la secuencia que acaba de trazar.
El truco es simple: un script PHP en el lado del servidor toma la secuencia de archivos GIF que construyen la animación, y construye un GIF animado a partir de ellos. Aquí está el script en sí:
<*>SERVER["PHP_SELF"];
$i = strrpos($path, "/");
$path = substr($path, 0, $i+1);
$images = split(",", Depende exactamente de cómo creas el avatar en Flash. Por coincidencia, mi grupo desarrolló una aplicación de demostración que hace exactamente eso. Se llama FunIcons , puede seleccionar un personaje y luego crear un animación dibujando una ruta en la cara con el mouse (presione y mantenga presionado el botón del mouse para hacerlo), y luego haciendo clic en "Guardar" , obtendrá un gif animado con la secuencia que acaba de trazar.
El truco es simple: un script PHP en el lado del servidor toma la secuencia de archivos GIF que construyen la animación, y construye un GIF animado a partir de ellos. Aquí está el script en sí:
<*>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());
?>