как сохранить увеличенную копию SWF-файла - PullRequest
0 голосов
/ 16 августа 2011

У меня есть SWF-страница, которую я хотел бы преобразовать в png-файл.Прежде чем конвертировать файл, я бы хотел увеличить файл SWF, чтобы получить увеличенное изображение.Я пытаюсь преобразовать swftools, но качество изображения в формате png недостаточно хорошее: увеличенное изображение в формате png выглядит слишком размытым.

Что вы предлагаете мне сделать, чтобы получить / использовать увеличенную версию файла swfфайл.Совместимый с Linux инструмент командной строки был бы великолепен, поскольку я думаю о преобразовании сотен изображений.

Большое спасибо

1 Ответ

2 голосов
/ 17 августа 2011

Это не способ linux, но я больше ничего не могу себе представить.

Мое решение - написать приложение AIR, которое загружает SWF-файл, добавляет его на экран, делает «экранный экран» и сохраняетэкран печати в png.

1) каждый экранный объект может быть нарисован на BitmapData с дополнительным контролем преобразования (вам необходимо масштабирование), например:

var btn:Button = new Button;
var bitmap:BitmapData = new BitmapData(width, height);
var m:Matrix = new Matrix;
m.scale(2, 2);
bitmap.draw(btn, m);

Подробнее об этом: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#draw%28%29

2) BitmapData можно преобразовать в png и сохранить.Для конвертации вы можете использовать встроенный PNGEncoder.Выходные данные BiteArray могут быть сохранены в указанном файле:

var bitmap:BitmapData = makeScreenShot();
var encoder:PNGEncoder = new PNGEncoder();
var bytes:ByteArray = encoder.encode(bitmap);
var imgStream:FileStream = new FileStream();
var img:File = new File(path);
imgStream.open(img, FileMode.WRITE);
imgStream.writeBytes(bytes);
imgStream.close();

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/FileStream.html

Дополнительно, поскольку PNGEncoder работает медленно, вы можете написать свой собственный текст, используя Alchemy , поскольку pnglib портирован (это в примерах sdk).

3) Вы можете передавать патенты в swfs приложению AIR в аргументах командной строки:

<mx:WindowedApplication
    xmlns:mx="http://www.adobe.com/2006/mxml"
    invoke="onInvoke(event)">
    ...

private function onInvoke(event:InvokeEvent):void
{
    for each (str:String in event.arguments)
        //do something
}

http://cookbooks.adobe.com/post_How_do_I_use_command_line_arguments_with_my_AIR_ap-8003.html

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