2013年12月7日土曜日

as3でlzma圧縮

FlashPlayer11.3から搭載された新機能。

今まではzip圧縮しかできなかったのが高効率のlzma圧縮も対応できるようになっているらしい。

Adobe純正の flex sdk4.6 では compress('lzma') に対応していなくて、コードから直接読み込むのは不可能でした。

flex sdkはAdobeではもう作っていなくて、apache flex sdkになっているらしい。
apache flex sdk 4.11 をダウンロードして使ってみたら、lzma呼び出せました。

ByteArray形式のデータを保存するだけなので、すごい簡単です。

// 保存したいファイルのデータ(本当はこのデータを外部ファイルを読み込む形になる)
var file:FileReference = new FileReference();
// ByteArrayのデータを抽出
var data:ByteArray = new ByteArray();
data.writeBytes(file.data);
// 圧縮するとき
data.compress(CompressionAlgorithm.LZMA);
file.save(data);
// 解凍するとき
data.uncompress(CompressionAlgorithm.LZMA);
file.save(data);



0 件のコメント:

コメントを投稿