JPEG画像をローカルに保存したくて検索したけどズバリこれという記事が見つけられなかったので
弄りながらだけど、やっと出来たのでメモがてらソースをあげときます。
動作:
test.pngをマイドキュメントフォルダにjpgファイルで保存します。
手順:
1.mxmlファイルをFlex SDK(amxmlc)でコンパイルしてswfファイルを生成
2.AIR用の設定ファイルを書く
3.adtで.airファイルを生成、.airファイルをダブルクリックしてインストール
4.インストールされたAIRアプリケーションの同階層にtest.pngを入れる
5.saveボタンを押すとosの保存ダイアログが出ます。
6.ファイル名をつけて保存で保存されます。
画像の読み込み部分も作りたかったけど次に持ち越し。
続いてソースです。
●Main.mxml
<?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import flash.filesystem.*; import mx.graphics.codec.JPEGEncoder; private var dir:File; public function saveImg( ):void { //マイドキュメント階層 dir = File.documentsDirectory; dir.addEventListener(Event.SELECT,onSelect); //保存ダイアログを開く。saveはダイアログに表示されるタイトル dir.browseForSave("save"); } private function onSelect(evt:Event):void { try { var bmpData:BitmapData = new BitmapData(img.width, img.height); bmpData.draw(img); //圧縮率80でjpeg保存 var jpgEncoder:JPEGEncoder = new JPEGEncoder(80); var jpgBytes:ByteArray = jpgEncoder.encode(bmpData); // FileStreamクラスのインスタンス作成 var stream:FileStream = new FileStream( ); //ストリームを開く stream.open(dir, FileMode.WRITE); //書き込む stream.writeBytes(jpgBytes, 0, jpgBytes.length); //ストリームを閉じる stream.close( ); } catch (e:Error) { trace(e); } } ]]> </mx:Script> <mx:Image id="img" source="test.png" /> <mx:Button label="Save" click="saveImg( )" /> </mx:Application>
注:実際にコンパイルする場合はコメント部分 //~ を取らないとエラ-でます。
上記のコードをコンパイル(Main.swf ができる)
amxmlc Main.mxml
●Main-app.xml(AIR用の設定ファイル)
<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://ns.adobe.com/air/application/1.0.M4" appId="test" version="1.0"> <name>test</name> <description>A test AIR application.</description> <copyright>2007 yoropan</copyright> <rootContent systemChrome="standard" transparent="false" visible="true">Main.swf</rootContent> </application>
AIRの生成コマンド(Main.airができる)
adt -package Main.air Main-app.xml Main.swf
◆参考にさせていただいたサイト
- Adobe AIRメモ:ファイルの読み書き
- 今からはじめるAIRプログラミング:(7) ファイル操作用API(2) – AIRのファイルシステムコンポーネント
- GIZMO Community : B-Wiki – ApolloWiki/Chapter5:ビットマップデータを PNG や JPEG フォーマットでファイルに保存する
- Flex 3 Language Reference:Class JPEGEncoder