Рендеринг Flash (SWF) кадра в виде изображения (PDF, PNG, JPG) - PullRequest
7 голосов
/ 07 июня 2010

Я хотел бы написать скрипт на python, который берет кучу SWF-файлов и выводит их в отдельные файлы изображений.

Каждый SWF-файл имеет только один кадр (текст, изображения и т. Д.) И не имеет анимации вообще. Я уже пробовал команду рендеринга из набора инструментов swftools (версия для Windows), но разрешение получающегося изображения слишком низкое.

Итак, что мне нужно:

Инструмент командной строки (Windows / Linux) или библиотека python, которая отображает один кадр из SWF-файла в растровое изображение или лучше в нечто вроде PDF (было бы здорово, если бы текстовые данные можно было сохранить) Было бы здорово, если бы целевое разрешение / размер могли быть установлены вручную.

Заранее спасибо!

Ответы [ 3 ]

11 голосов
/ 07 июня 2010

Мне жаль отвечать на мой собственный вопрос, но я нашел недокументированную функцию swfrender (часть swftools), просматривая источники.

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

Как вы уже догадались, опция X позволяет вам определять ширину (в пикселях) вывода, а Y делает то же самое для высоты. Если вы просто установите один параметр, то другой будет выбран по отношению к исходному отношению высоты к ширине (довольно полезно)

Это помогает мне, но поскольку Zarate предлагает решение, которое может быть даже лучше (я думаю о преобразовании SWF в PDF), он заслуживает кредитов.

Приветствия

5 голосов
/ 23 декабря 2010

Иногда SWFRender застревает на очень тяжелых файлах, особенно при создании изображений с разрешением 300 точек на дюйм +. В этом случае Gnash может помочь:

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

здесь мы выгружаем последний кадр фильма в файл output.png, отключая обработку звука и завершая работу после рендеринга кадра. Также мы можем указать здесь масштабный коэффициент или использовать

-j width -k height

, чтобы указать точный размер получаемого изображения.

3 голосов
/ 07 июня 2010

Например, вы можете создать приложение AIR, которое загружает каждый SWF, делает снимок экрана и записывает его в файл.

Дело в том, что вам нужно что-то сделать для рендеринга, и, насколько я знаю, вы не можете сделать это без игрока или какой-либо его реализации с открытым исходным кодом.

Я думаю, что ваша лучшая ставка - AIR, SDK бесплатный и кроссплатформенный. Если вы привыкли к питону, необходимый AS3 должен быть достаточно легким для подбора.

НТН,

J

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...