[英]How to save a jpg image to android phone with as3
我正在嘗試將圖像保存到我的Android手機的特定目錄中。 我以某種方式花了幾個小時,但無法正常工作。 我希望有人能幫助我理解為什么我的代碼無法正常工作,或者是否還有其他方法可以做到。
public function SaveTheImage(me:MouseEvent):void
{
ImageSaverBMD.draw(ImageHolder);
var jpgEncoder:JPGEncoder = new JPGEncoder(100);
var jpgBytes:ByteArray = jpgEncoder.encode(ImageSaverBMD);
var myFile:File = File.documentsDirectory.resolvePath("/sdcard / DCIM / Camera/testingimage.jpg");
var fs:FileStream = new FileStream();
fs.open(myFile, FileMode.WRITE);
fs.writeBytes(jpgBytes, 0, jpgBytes.length);
fs.close();
}
您的算法中有很多步驟可能會導致該錯誤,對於您提供的代碼,我可以做出一些猜測,但是有更好的方法。
首先嘗試以下代碼:
var s:Shape = new Shape();
s.graphics.beginFill(0);
s.graphics.drawCircle( 20, 20, 20);
s.graphics.endFill();
var bd:BitmapData = new BitmapData(40, 40, false);
bd.draw(s);
var jpgEncoder:JPGEncoder = new JPGEncoder(100);
var bytes:ByteArray = jpgEncoder.encode(bd);
var f:File = File.applicationDirectory;
var fs:FileStream = new FileStream();
fs.open(f, FileMode.WRITE);
fs.writeBytes(bytes);
fs.close();
這應該在您提供的目錄中保存80x80像素的黑色圓圈。 看看是否可行。 如果不是,請檢查權限以擁有外部存儲。
如果可行,請從頭到尾逐塊刪除代碼:
刪除頂部的兩個塊,然后放置ImageSaverBMD.draw(ImageHolder)
行。 也許問題出在那堂課上? 可能是位圖數據大小錯誤或繪圖矩陣轉換不正確。
JPGEncoder可能還可以,它是一個常用的框架,但是有時當我將其復制到源文件中時,我需要更改.as文件中的包。 您的包裹正確嗎?
您在File對象中的URL包含空格,可能是您遇到的問題,請首先嘗試使用簡單的URL並查看是否可行。 可能是您嘗試使用相對URL模式導航到絕對URL的問題(對此我可能是錯的,通常我有不同的導航到文件夾的方法)。
希望有幫助!
private function export():void
{
var today_date:Date = new Date();
var thismonth:uint = today_date.getMonth();
var today_time;
var currentTime:Date = new Date();
var minutes = currentTime.getMinutes();
var seconds = currentTime.getSeconds();
var hours = currentTime.getHours() * 30 + currentTime.getMinutes() / 2;
var mnth:Array = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var fileName:String = (today_date.getDate()+mnth[thismonth]+today_date.getFullYear()+"_"+currentTime.hours + currentTime.minutes + currentTime.seconds+".png");
//trace(fileName);// displays current date in United States date format
var bmd:BitmapData = new BitmapData(board.width, board.height);//(600, 290);
bmd.draw(board);
var ba:ByteArray = PNGEncoder.encode(bmd);
// var file:File = File.applicationDirectory;
//var file:FileReference = new FileReference();
var fs : FileStream = new FileStream();
var targetFile : File = File.documentsDirectory.resolvePath(fileName);
//var targetFile : File = File.applicationDirectory.resolvePath(fileName);
fs.open(targetFile, FileMode.WRITE);
fs.writeBytes(ba);
fs.close();
//file.addEventListener(Event.COMPLETE, saveSuccessful);
saveDialog = new SaveDialog();
addChild(saveDialog);
test = setInterval(showMessage,2000);
//var test = setInterval(showMessage,3000);
saveDialog.closeBtn.addEventListener(MouseEvent.MOUSE_UP, closeSaveDialog);
//file.save(ba, fileName);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.