2010-06-07 17 views
7

Ich möchte ein Python-Skript schreiben, das eine Reihe von SWF-Dateien aufnimmt und sie in einzelne Bilddateien rendert.Render Flash (SWF) Frame als Bild (PDF, PNG, JPG)

Jede SWF-Datei hat nur einen Rahmen (Text, Bilder usw.) und überhaupt keine Animationen. Ich habe bereits den Render-Befehl aus dem swftools toolset (Die Windows-Version) versucht, aber die Auflösung des resultierenden Bildes ist zu niedrig.

Also, was ich brauche, ist:

Ein Kommandozeilen-Tool (Windows/Linux) oder eine Python-Bibliothek, die ein Bild aus einer swf in eine Bitmap oder besser zu so etwas wie ein PDF macht (es wäre cool, wenn die Textdaten könnten beibehalten werden). Es wäre großartig, wenn die Zielauflösung/Größe manuell eingestellt werden könnte.

Vielen Dank im Voraus!

Antwort

3

Sie könnten zum Beispiel eine AIR-App erstellen, die jede SWF lädt, den Screenshot erstellt und in eine Datei schreibt.

Die Sache ist, Sie müssen etwas anstoßen, um das Rendern zu tun und, soweit ich weiß, können Sie das ohne den Spieler oder einige seiner Open-Source-Implementierung nicht tun.

Ich denke, Ihre beste Wette ist AIR, ist kostenlos und plattformübergreifend. Wenn Sie an Python gewöhnt sind, sollte das AS3 einfach genug sein, um es aufzunehmen.

HTH,

J

+0

Danke! Daran habe ich nicht gedacht. Ich werde es versuchen und meine Ergebnisse veröffentlichen. –

11

Es tut mir leid meine eigene Frage zu beantworten, aber ich fand eine undokumentierte Funktion von swfrender (Teil der swftools), indem sie durch den Quellen durchsuchen.

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

Wie Sie die X-Option vielleicht erraten haben können Sie die Breite bestimmen (in Pixeln) der Ausgabe und Y hat die gleiche für die Höhe. Wenn Sie nur einen Parameter einstellen, dann wird der andere in Bezug auf das ursprüngliche Höhe-Breite-Verhältnis gewählt (ziemlich nützlich)

Das macht den Trick für mich, aber als Zarate bot eine Lösung, die noch besser sein könnte (I Ich denke an swf zur PDF Konvertierung) er verdient die Credits.

Prost

+0

Erledigt die Arbeit nicht mit Transparenz, gibt es in der Zwischenzeit eine Alternative? – Osa

5

Manchmal ist SWFRender bei sehr schweren Dateien steckt, vor allem, wenn 300dpi + Bilder zu erzeugen. In diesem Fall kann Gnash helfen:

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

wir hier eine letzte Bild eines Films Dump Datei output.png deaktivieren Tonverarbeitung und Aussteigen, nachdem der Rahmen wiedergegeben wird. Auch hier können wir den Skalierungsfaktor angeben oder verwenden Sie

-j width -k height 

, um die genaue Größe des resultierenden Bildes anzugeben.