Re: [問題] 關於將ByteArray存成檔案的問題
※ 引述《heerodream (我想當壞人)》之銘言:
: 之前問過一個畫面抓圖存檔的問題
: 想自己寫一個儲存ByteArray成檔案的程式
: 現在我用BitmapData.draw()函數抓下BitmapData
: 然後使用JpgEncoder的函數後 轉成ByteArray
: 我想將ByteArray儲存成檔案
: 之前是用FileReference.save()來做
: 因為考慮到AIR1.0不支援save()函數且舊版Flash player也不支援
: 然後也不希望在儲存檔案的時候會跳出選擇資料夾的視窗
: 使用者只要按一個鈕 圖片就會存到程式指定的路徑了
: 如果是要自己寫要怎麼做呢?
: 希望的功能是
: 呼叫這個函數時 可將指定的ByteArray存成檔案到硬碟中
: 並且 路徑和檔名是寫在程式的變數中
自問自答...
剛試出來了
不過是用AIR 1.0提供的FileStream類別
CODE如下:
//Air執行檔所在的絕對路徑
var rootFolder:String=File.applicationDirectory.nativePath;
//抓今天日期
var nowDate:String=
new Date().fullYear.toString()+"_"+new Date().month.toString()+
"_"+new Date().date.toString();
//宣告檔名
var name:String="1234.jpg"
//用今天日期當作資料夾名稱
var folder:String="\/"+nowDate+"\/";
//宣告一個空殼目標檔案 存放在rootFolder+folder+name路徑中
var targetFile:File =
File.documentsDirectory.resolvePath(rootFolder+folder+name);
//存檔路徑檔案的parent確認是否存在 若不存在則建立新增料夾rootFolder+folder
var targetParent:File = targetFile.parent;
targetParent.createDirectory();
//將ByteArray經由writeBytes方法 存成一個實體檔案
var stream:FileStream = new FileStream();
//先打開一個空殼File,設定mode為寫入
stream.open(targetFile, FileMode.WRITE)
//寫入ByteArray成檔案
stream.writeBytes(imgByteArray);
//關閉FileStream
stream.close();
這樣可以將擷下來的圖存到AIR主程式目錄下的指定位置
並且不會跳出 選擇檔案位置 的對話框
如果不用FileStream這個類別的做法 我目前還不知道怎麼做...
(我是在記事本打好再貼上來的...)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.216.75
※ 編輯: heerodream 來自: 140.113.216.75 (08/11 18:57)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):