在Adobe AIR中保存iOS上的bitmapdata

时间:2012-09-14 18:21:39

标签: air

我有一个在Adobe AIR中开发的应用程序,并使用适用于iOS的Flex SDk 4.6进行编译。该应用程序有一个模块,用户可以将当前屏幕保存到appstorage。这工作正常,但保存图像大约需要6-8秒。

我使用bitmapdata绘制舞台,然后使用jpgencoder将其转换为bytearray,然后使用File引用将其保存到appstorage。

有人可以告诉我这是否是捕获图像的唯一方法,或者在iOS上使用AIR时有更好的选择吗?

这是我的代码

        var bmp:BitmapData  =   new BitmapData(640,960,false,0)
        bmp.draw(this);
        //
        var je:JPGEncoder        =  new JPGEncoder();
        var b:ByteArray     =   je.encode(bmp);
        var saveFileName        =   String( new Date().milliseconds )  + ".jpg";
        var cropFile:File   =   appDir.resolvePath(saveFileName)

        var stream          =   new FileStream();
        stream.open(cropFile, FileMode.WRITE);                         

        stream.writeBytes(b,0,b.bytesAvailable);
        stream.close();
        bmp.dispose();

2 个答案:

答案 0 :(得分:0)

如果您想减少捕获时间,也许您可​​以使用原生扩展。 在ios上有一个名为UIGetScreenImage的API。我认为它必须非常快。

答案 1 :(得分:0)

对于那些寻找解决方案的人,请转到http://www.labs.saachitech.com/2012/10/12/capture-image-on-a-adobe-ios-application-and-save-to-ios-device-disk/并下载swc和ane文件,以便在iOS设备上更快地保存位图数据。