2012-03-09 21 views
8

¿Cómo puedo, en Linux, procesar un swf en un archivo de imagen? Necesito poder cargar otros swfs en ese swf y ejecutar código actionscript.Renderizar swf a png u otro formato de imagen

¿Es posible en Linux? Necesito hacerlo desde PHP, está bien si tengo que usar herramientas de línea de comandos.

+0

posible duplicado de [Convertir SWF a PNG] (http://stackoverflow.com/questions/2001946/convert-swf-to- png) – ruakh

Respuesta

16

swfrender de swftools funciona para archivos SWF básicos.

swfdec-thumbnailer de swfdec-gnome funciona a pesar de que solo obtiene el primer fotograma del swf.

Para obtener cualquier marco de swf con swfdec, consulte el fragmento de código C en la siguiente lista de correo post.

gnash de gnash también funciona gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf, última imagen del swf.

ffmpeg de ffmpeg también funciona para algunos formatos SWF ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

también las siguientes guide para una tubería de línea de comandos.

Para llamar a programas externos desde php usa el comando exec documentado here.

Tenga en cuenta que, por razones de seguridad, es importante evitar los argumentos pasados ​​a exec con otro comando como escapeshellcmd o escapeshellarg por razones de seguridad.

Una vez que haya convertido a un formato de imagen ya sea para un solo fotograma o para todos los fotogramas, no podrá ejecutar el script de acción. Otras herramientas que no son GNU/Linux admiten la exportación del script de acción desde SWF.

Si el SWF que va a exportar a PNG es demasiado complicado para las otras herramientas que puede utilizar el plugin de Flash o Gnash y Xvfb junto con el software de captura de pantalla para capturar cualquiera de cuadros de imagen del archivo SWF o un formato de vídeo como AVI . Luego puedes extraer las imágenes del formato de video.

Este método de framebuffer virtual admitirá archivos SWF complicados, aunque requiere mucho trabajo, ya que necesita utilizar Gnash y Xvfb y Screen Capture, o un navegador, Xvfb y Selenium, si desea capturar un determinado conjunto de las interacciones de mouse/teclado con el SWF.

Gnash con y sin Virtual FrameBuffer debe cargar el código ActionScript antes de exportar, pero puede tener problemas con el código ActionScript complicado. Flash Plugin con Virtual Framebuffer cargará el código ActionScript antes de exportarlo.

consulta las siguientes preguntas Stackoverflow, que se pregunta es un duplicado de

+0

Excepto que requiero que se ejecute el actionscript en el swf, sé de hecho que swfrender no funciona para lo que quiero. ¿Los otros permiten que se ejecute actionscript? –

+0

Una vez exportados a png, las imágenes png resultantes o animaciones mng no pueden ejecutar actionscript independientemente de la herramienta utilizada. – Appleman1234

+2

No, quiero decir que antes de exportar la película flash, necesita ejecutar el código para mostrar lo que quiero. –

1

Esta es la solución que terminé usando.

Puede utilizar una herramienta como Xvfb (servidor X11) y ejecutar el proyector reproductor flash independiente dentro de él (puede que tenga que instalar un montón de bibliotecas de 32 bits), a continuación, utilizar una utilidad de captura de pantalla como import para capturar la pantalla y recortarlo a su tamaño.

Encontré this page en la representación de swf capturas de pantalla en linux útiles. También dice que puedes usar gnash para hacer esto, sin embargo, gnash no funcionará para flash player 9+.

Cuestiones relacionadas