【问题标题】:Adobe AIR - Save image on hard driveAdobe AIR - 将图像保存在硬盘上
【发布时间】:2011-10-10 16:03:37
【问题描述】:

我发现下面的 sn-p 可以使用 Adob​​e AIR 将图像保存到特定文件夹。

如何修改"Save As" OS 窗口先出现? (因此用户可以选择将图像保存在硬盘驱动器的哪个位置)

var arrBytes:ByteArray = PNGEncoder.encode(bmd);
    var file:File = File.desktopDirectory.resolvePath(folderName + "/" + fileName + fileNum + ".png");
    var fileStream:FileStream = new FileStream();
    //
    fileStream.open(file, FileMode.WRITE);
    fileStream.writeBytes(arrBytes);
    fileStream.close();

谢谢。

【问题讨论】:

    标签: actionscript-3 apache-flex air


    【解决方案1】:

    使用File.browseForSave:

    import flash.filesystem.*;
    import flash.events.Event;
    import flash.utils.ByteArray;
    
    var imgBytes:ByteArray = PNGEncoder.encode(bmd);
    var docsDir:File = File.documentsDirectory;
    try
    {
        docsDir.browseForSave("Save As");
        docsDir.addEventListener(Event.SELECT, saveData);
    }
    catch (error:Error)
    {
        trace("Failed:", error.message);
    }
    
    function saveData(event:Event):void 
    {
        var newFile:File = event.target as File;
        if (!newFile.exists) // remove this 'if' if overwrite is OK.
        {
            var stream:FileStream = new FileStream();
            stream.open(newFile, FileMode.WRITE);
            stream.writeBytes(imgBytes);
            stream.close();
        } 
        else trace('Selected path already exists.');
    }
    

    manual 永远是你的朋友 :)

    顺便说一句,我看到您在这里相对较新 - 欢迎来到 StackExchange!如果您觉得我的回答对您有帮助,请务必选择它作为答案。

    【讨论】:

    • 已选择。非常感谢你。顺便说一句:有没有“最快的方法”来保存图像以从 AIR 驱动?通过对 2800px x 2800px 的位图进行编码,我在保存之前总是有延迟 - 这正常吗?
    • 很高兴它有帮助。延迟与编码(而不是文件写入)有关。见here 和最快的here
    • 太棒了。谢谢你的链接。
    • @NRohler - 那个该死的编码器看起来真的很棒!不幸的是,我下载了 swc,但它似乎没有正确编译。 FDT 也无法正确解析。是否有旧版本可以正常工作?
    • @jowie 我从来没有用 FDT 项目尝试过 SWC。您可能想尝试直接联系 Nick(或 Powerflasher)。
    猜你喜欢
    • 2015-05-16
    • 1970-01-01
    • 2012-10-02
    • 2011-02-08
    • 1970-01-01
    • 2017-08-24
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多