Рендеринг swf в png или другой формат изображения

Как я могу в Linux визуализировать SWF-файл в файл изображения? Мне нужно иметь возможность загружать другие swf-файлы в этот swf-файл и запускать код ActionScript.

Это вообще возможно на Linux? Мне нужно сделать это из PHP, это нормально, если мне придется использовать инструменты командной строки.


person James T    schedule 09.03.2012    source источник
comment
возможный дубликат Конвертировать SWF в PNG   -  person ruakh    schedule 11.03.2012


Ответы (3)


swfrender из swftools работает для основных файлов SWF.

swfdec-thumbnailer из swfdec-gnome работает, хотя получает только первый кадр SWF.

Чтобы получить любой кадр из swf с помощью swfdec, см. Фрагмент кода C в следующем списке рассылки сообщение.

gnash из gnash также работает gnash -s<scale-image-factor> --screenshot last --screenshot-file output.png -1 -r1 input.swf, последний образ swf.

ffmpeg из ffmpeg также работает с некоторыми форматами swf ffmpeg -i movie.swf -f image2 -vcodec png movie%d.png

См. Также следующее руководство для конвейера командной строки.

Для вызова внешних программ из php используйте команду exec, задокументированную здесь.

Обратите внимание, что по соображениям безопасности важно избегать аргументов, переданных в exec, с помощью другой команды, например escapeshellcmd или escapeshellarg, из соображений безопасности.

После преобразования в формат изображения для одного кадра или для всего кадра вы не сможете запустить сценарий действия. Другие инструменты, отличные от GNU / Linux, поддерживают экспорт сценария действия из SWF.

Если SWF, который вы экспортируете в PNG, слишком сложен для других инструментов, вы можете использовать подключаемый модуль Flash или Gnash и Xvfb вместе с программным обеспечением для захвата экрана для захвата кадров изображения SWF или видеоформата, такого как avi. Затем вы можете извлечь изображения из видео формата.

Этот метод виртуального фреймбуфера будет поддерживать сложные SWF-файлы, хотя он требует большой работы, так как вам нужно использовать либо Gnash, Xvfb и Screen Capture, либо браузер, Xvfb и Selenium, если вы хотите захватить определенный набор мыши / клавиатуры. взаимодействие с SWF.

Gnash с виртуальным буфером кадров и без него должен загружать ActionScript перед экспортом, но могут возникнуть проблемы со сложным ActionScript. Плагин Flash с виртуальным буфером кадра загрузит ActionScript перед экспортом.

Также см. Следующие вопросы StackOverFlow, которые, по вашему мнению, являются дубликатом

person Appleman1234    schedule 10.03.2012
comment
За исключением того, что я требую, чтобы сценарий действий в swf мог работать, я точно знаю, что swfrender не работает для того, что я хочу. Остальные позволяют запускать ActionScript? - person James T; 10.03.2012
comment
После экспорта в png полученные изображения png или анимация mng не могут запускать ActionScript вне зависимости от используемого инструмента. - person Appleman1234; 11.03.2012
comment
Нет, я имею в виду, что перед экспортом флеш-ролика необходимо запустить код, чтобы отобразить то, что я хочу. - person James T; 12.03.2012
comment
@ Appleman1234: Отличный совет. Любые подсказки, как выполнить рендеринг из SWF в PDF? Я могу сделать это через изображение, но было бы неплохо преобразовать шрифты и метки как текст в PDF без растеризации. - person dma_k; 28.05.2012
comment
Обычно отдельный вопрос должен быть отдельным вопросом, насколько я знаю, нет способа конвертировать SWF в PDF без растрирования в изображения без использования официального программного обеспечения Adobe, и даже тогда они будут растрировать в изображение, если соответствующий тип метки текста или Postscript не обнаружены. - person Appleman1234; 29.05.2012

Это решение, которое я в итоге использовал.

Вы можете использовать такой инструмент, как Xvfb (сервер X11), и запустить в нем проектор автономного флеш-плеера ( вам может потребоваться установить кучу 32-битных библиотек), затем используйте утилиту захвата экрана, например import, чтобы сделать снимок экрана и обрезать его до нужного размера.

Я нашел эту страницу о рендеринге скриншотов swf в Linux. В нем также говорится, что вы можете использовать для этого скрежет, однако скрежет не будет работать для flash player 9+.

person James T    schedule 08.05.2012

Попробуйте это воздушное приложение http://swfrenderer.kurst.co.uk

Он отображает SWF кадр за кадром

person Joe Yang    schedule 11.05.2012