Adobe AIR - 将图片保存到硬盘

4
我发现下面的代码片段可以使用Adobe AIR将图像保存到特定文件夹中。
如何修改代码,使得"另存为"操作系统窗口首先弹出?(这样用户可以选择在硬盘上保存图像的位置)
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();

谢谢。

1个回答

6

使用 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.');
}

手册永远是你的好朋友 :)

顺便说一下,我看到你在这里还比较新 - 欢迎来到StackExchange!如果你觉得我的回答有帮助,请务必将其选为答案。


已选择。非常感谢。顺便问一下:从AIR中保存图像的“最快方法”是什么?通过对2800px x 2800px的位图进行编码,我总是要等待一段时间才能保存 - 这正常吗? - Tom
很高兴能帮上忙。延迟是由于编码问题(而非文件写入)。请参见此处,以及最快的方法此处 - N Rohler
@NRohler - 那个编码器看起来非常不错!不幸的是,我下载了swc文件,但它似乎无法正确编译。FDT也无法正确解析它。有没有任何旧版本可以正常工作? - jowie
@jowie 我从未尝试过在FDT项目中使用那个SWC。你可能想直接联系Nick(或Powerflasher)试试看。 - N Rohler
@NRohler 谢谢,但我已经直接在Flash中尝试过了,当我尝试访问它的命令时,它无法编译。它与其他几个swc文件并排存在,但是它是唯一一个无法工作的。 - jowie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接