2010-01-04 29 views
14

Me gustaría poder tomar un archivo SWF de 1 fotograma y convertirlo a PNG a través de PHP. Estoy de acuerdo con el uso de herramientas de línea de comandos para hacer esto.Convertir SWF a PNG

¿Cómo podría hacer esto? Encontré an ActiveX library, pero parece que hay demasiadas capas. También veo que Gnash parece tener un PNG output class, pero no puedo encontrar la manera de llegar a eso desde la línea de comandos sin hacer una codificación propia. ¿Hay alguna otra solución inteligente disponible? ¡Gracias!

EDITAR: Para aclarar, esta no es una tarea de una sola vez, solo quiero poder hacer una vez. Me gustaría poder tener un script PHP para realizar esta tarea en el comando. ¡Gracias!

Otro EDIT: Una aclaración más. Esta no es una situación en la que, por ejemplo, un usuario hace un dibujo en Flash. Estoy descargando archivos SWF de 1 foto sin formato y quiero guardar copias PNG para reducir el tiempo de descarga. ¿Es posible tal tarea? ¡Gracias de nuevo!

Respuesta

23

puede utilizar swftools.
swfrender file.swf -X pixelsize -Y pixelsize -o output.png

Si sólo se especifica un entre -X-Y parámetro a continuación, se respetan las proporciones

+0

Impar Busqué swftools pero de alguna manera me perdí esa herramienta en particular que hace exactamente lo que necesito. Lo comprobaré más tarde hoy :) – Matchu

+0

Parece que funciona al instante, ¡y pensar que ya lo había instalado! ¡Gracias! – Matchu

+1

Lamentablemente, esto no parece funcionar bien con fondos transparentes. Herramienta impresionante sin embargo. Uno de nuestros desarrolladores off shore intenta sugerir [SWFToVideo] (http://bytescout.com/products/developer/swftovideosdk/swftovideosdk.html) pero es $ 1000 por una licencia ........ :(* triste cara * –

2
+0

I Preferiríamos comenzar con las tecnologías del lado del servidor, luego probar con el lado del cliente, ya que siempre habrá usuarios maliciosos. Pero gracias, lo tendré en cuenta :) – Matchu

+2

El objetivo del artículo es que la captura de pantalla se tome en Flash. Puedes hacer lo que quieras con esa imagen en ese punto. – CookieOfFortune

+0

PHP le permitirá escribir ese png en el servidor usando una extensión de archivos. Utilizará el mismo mecanismo dentro de Flash para codificar los datos .png, y luego solo enviará la matriz de bytes a su método PHP. – Myk

1

Dependiendo del tipo de los SWF que tiene usted podría intentar FFmpeg desde la línea de comandos:

ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png 
+0

"[swf @ 0x9b822c0] Formato SWF comprimido no compatible" - drat. Tratando de encontrar una forma de salir de esto, aparentemente debería poder construir una herramienta que lo descomprima ... – Matchu

+1

Interesante. Ahora, PNG aparece como uno de los formatos de ffmpeg, pero de todos modos me aparece que "no pude encontrar los parámetros del códec". Seguiré trabajando en eso. – Matchu

+0

Recibí el mensaje "No se pudieron encontrar los parámetros del códec" también –

2
no

realmente una solución basada en servidor, pero he desarrollado una utilidad AIR para convertir SWF a secuencias PNG: http://swfrenderer.kurst.co.uk/

+0

Esto obtiene un +1 de mí. Después de horas de búsqueda y prueba, esto es lo único que funcionará para exportar confiablemente una secuencia SWF a PNG _con clips de película incrustados_. Incluso la aplicación v1 AIR todavía funciona a la perfección con un CS6 SWF. – indextwo