2010-06-07 34 views
7

Me gustaría escribir un script de python que tome un grupo de archivos swf y los muestre en archivos de imagen individuales.Renderizar marco de flash (SWF) como imagen (PDF, PNG, JPG)

Cada archivo swf tiene solo un marco (texto, imágenes, etc.) y no tiene animaciones. Ya he probado el comando de renderización desde el conjunto de herramientas swftools (versión de Windows), pero la resolución de la imagen resultante es demasiado baja.

Así que lo que necesito es:

Una herramienta de línea de comandos (Windows/Linux) o una biblioteca de Python que hace un cuadro de un swf a un mapa de bits o mejor a algo así como un PDF (que estaría bien si los datos de texto pueden ser retenidos). Sería genial si la resolución/tamaño del objetivo pudiera establecerse manualmente.

¡Gracias de antemano!

Respuesta

3

Por ejemplo, podría compilar una aplicación de AIR que cargue cada archivo SWF, tome la captura de pantalla y la escriba en un archivo.

Lo que pasa es que tendrás que poner en marcha algo para hacer el render y, hasta donde yo sé, no puedes hacer eso sin el reproductor o parte de su implementación de código abierto.

Creo que su mejor apuesta es AIR, es gratuita y multiplataforma. Si está acostumbrado a Python, el AS3 necesario debería ser lo suficientemente fácil de detectar.

HTH,

J

+0

Gracias! No he pensado en eso. Lo probaré y publicaré mis resultados. –

11

lo siento para responder a mi propia pregunta, pero he encontrado una característica no documentada de swfrender (parte de los SWFTools) navegando a través de las fuentes.

swfrender path/to/my.swf -X<width of output> -Y<height of output> 
-o<filename of output png> 

Como puede haber adivinado la opción X le permite determinar el ancho (en píxeles) de la salida e Y hace lo mismo para la altura. Si solo establece un parámetro, entonces el otro se elige en relación con la relación altura-ancho original (bastante útil)

Eso me funciona, pero como Zarate ofreció una solución que podría ser incluso mejor (I Estoy pensando en la conversión de swf a PDF) merece los créditos.

Saludos

+0

No hace el trabajo con transparencia, ¿hay alguna alternativa mientras tanto? – Osa

5

veces SWFRender se ha quedado atascado en archivos muy pesados, sobre todo cuando la producción de 300dpi + imágenes. En este caso Gnash puede ayudar:

gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf 

aquí volcar un último fotograma de una película para presentar output.png deshabilitar el procesamiento de sonido y salida después de la trama se vuelve. También podemos especificar el factor de escala aquí o usar

-j width -k height 

para especificar el tamaño exacto de la imagen resultante.