読者です 読者をやめる 読者になる 読者になる

メイドさんを毎日見れるフォトビューワーを作ってみた

メイドさんを毎日見れるフォトビューワーを作ってみました。
Maid Photo Gallery !

今回はJPG画像の保存を試してみました。
作成するはじめは、JPGEncoder使ったりbitmap.drawとかするのかなぁ面倒だなぁって思いましたが、いろいろやっているうちに画像のbitmapさえ取得さえできれば書き出せるようです。
以下、簡単な説明です。

//URLLoader作成
private var loader:URLLoader;
protected function startLoader():void{
    var request:URLRequest = new URLRequest( "http://hogehoge/hoge.jpg" );
    loader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.BINARY;
    loader.addEventListener(Event.COMPLETE , onComp );
    loader.load(request);
}
//ロード完了
protected function onComp( e:Event ):void{
    var file:File = File.documentsDirectory.resolvePath( "hoge.jpg" );
    var stream:FileStream = new FileStream();
    try {
        stream.open(file, FileMode.WRITE );
        var ba:ByteArray = loader.data;
        stream.writeBytes( ba );
    } catch (e:EOFError) {
        // ファイル終端の処理
    } catch (e:IOError) {
        // 入出力エラーの処理
    } finally {
        // ストリームをクローズする
        stream.close();
    }
}

別にローダー使わなくても以下の記述でもOKです。ただし、画像が完全に読み込みが完了していることが前提です。

image.bitmapData.getPixels( 0 , 0 ,image.width , image.height );

また、GALAXY Sの性質上なのか、SDカードのメディアスキャンが行われるまで保存した画像がSDカードに反映されません。