Re: [問題] 關於將ByteArray存成檔案的問題

看板Flash作者 (我想當壞人)時間15年前 (2010/08/11 18:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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)
文章代碼(AID): #1COe6eK8 (Flash)
文章代碼(AID): #1COe6eK8 (Flash)