【问题标题】:how to save a zoomed-in copy of a swf file如何保存 swf 文件的放大副本
【发布时间】:2011-08-16 18:12:05
【问题描述】:

我有一个 swf 页面,我想将其转换为 png 文件。 在转换文件之前,我想放大 swf 文件,以便获得更大的图像。 我尝试使用swftools进行转换,但是png图像质量不够好:放大的png图像看起来太模糊了。

您建议我应该怎么做才能捕获/使用放大版的 swf 文件。 一个 linux 兼容的命令行工具会很棒,因为我正在考虑转换数百张图像。

非常感谢

【问题讨论】:

    标签: flash


    【解决方案1】:

    这不是 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

    【讨论】:

    • 那我好像不能批量转换文件了?那是对的吗?您认为值得尝试(安装、学习语法等)吗?
    • 您将能够批量转换文件。正如我所提到的,AIR 应用程序支持参数,因此您可以将 swfs 列表传递给它并连续转换。至于我,值得一试,但我不需要学习^^。另一个原因 - 它似乎是最简单的解决方案(如果不是唯一的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2015-07-16
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2022-12-06
    相关资源
    最近更新 更多