2010-06-07 27 views
7

Vorrei scrivere uno script python che raccolga un gruppo di file swf e li renda a singoli file di immagine.Frame di rendering Flash (SWF) come immagine (PDF, PNG, JPG)

Ogni file swf ha solo un fotogramma (testo, immagini ecc.) E nessuna animazione. Ho già provato il comando di rendering dal set di strumenti swftools (la versione di Windows), ma la risoluzione dell'immagine risultante è troppo bassa.

Quindi quello che serve è:

Uno strumento a riga di comando (Windows/Linux) o una libreria python che rende un fotogramma di uno swf a una bitmap o meglio a qualcosa come un PDF (che sarebbe stato bello se i dati del testo potrebbero essere mantenuti). Sarebbe bello se la risoluzione/dimensione di destinazione potesse essere impostata manualmente.

Grazie in anticipo!

risposta

3

Si potrebbe ad esempio creare un'app AIR che carica ciascun SWF, acquisisce lo screenshot e lo scrive in un file.

Il problema è che devi dare il via a qualcosa per eseguire il rendering e, per quanto ne so, non puoi farlo senza il player o parte della sua implementazione Open Source.

Penso che la soluzione migliore stia andando in AIR, è gratuito e multipiattaforma. Se sei abituato a Python, l'AS3 necessario dovrebbe essere abbastanza facile da raccogliere.

HTH,

J

+0

Grazie! Non ci ho pensato. Farò un tentativo e pubblicare i miei risultati. –

11

mi dispiace rispondere alla mia domanda, ma ho trovato una funzionalità non documentata di swfrender (parte dei SWFTools) guardando le fonti.

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

Come si può immaginare l'opzione X consente di determinare la larghezza (in pixel) dell'uscita e Y fa lo stesso per l'altezza. Se si imposta solo un parametro, l'altro viene scelto in relazione all'altezza-larghezza-altezza originale (abbastanza utile)

Questo è il trucco per me, ma come Zarate ha offerto una soluzione che potrebbe essere ancora migliore (I Sto pensando alla conversione da swf a PDF) che merita i crediti.

Acclamazioni

+0

Non fa il lavoro con trasparenza, C'è qualche alternativa nel frattempo? – Osa

5

volte SWFRender è bloccato a file molto pesanti, soprattutto quando si producono 300dpi + immagini. In questo caso può aiutare Gnash:

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

eccoci scaricare un ultimo fotogramma di un film di file output.png disabilitando l'elaborazione del suono e l'uscita dopo che il telaio è reso. Possiamo anche specificare il fattore di scala o utilizzare

-j width -k height 

per specificare la dimensione esatta dell'immagine risultante.