我正在編寫應該批量調整圖像大小的應用程序。我的問題是,我的代碼適用於具有小圖像或目錄的圖像較少的目錄,但是當我在需要更多處理的許多大圖像的目錄上運行我的代碼時,應用程序崩潰而不報告任何錯誤。這裏是我的代碼:應用程序崩潰對圖像進行大量處理
function BatchResizeDirectory(){
var dir : File = new File;
dir.addEventListener(Event.SELECT,function(){
var files = dir.getDirectoryListing();
for each (var file:File in files)
{
if(["png","jpg","bmp","jpeg"].indexOf(file.extension.toLocaleLowerCase()) != -1){
file.addEventListener(Event.COMPLETE,function(e:Event){
var f:File = File(e.target);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:Event){
//init bmp data
var bmpd:BitmapData = new BitmapData(loader.content.width,loader.content.height);
bmpd.draw(loader);
//resize
var result:BitmapData = ImageResizer.bilinearIterative(bmpd, 64,64,
ResizeMath.METHOD_PAN_AND_SCAN);
//write to disk
var pnge:JPEGEncoder = new JPEGEncoder();
var bytes:ByteArray = pnge.encode(result);
var name = f.name.replace("."+f.extension,"");
var outputFilename = dir.nativePath+"/"+ name + "_resized." + f.extension;
var outputFile:File = dir.resolvePath(outputFilename);
var fs:FileStream = new FileStream();
try{
//open file in write mode
fs.open(outputFile,FileMode.WRITE);
//write bytes from the byte array
fs.writeBytes(bytes);
//close the file
fs.close();
}catch(e:Error){
trace(e.message);
}
});
loader.loadBytes(f.data);
});
file.load();
}
}
});
dir.browseForDirectory("Choose the input folder");
}
我的問題是。爲什麼我的應用程序在重處理上崩潰?它與匿名聲明事件處理程序有什麼關係?我很困惑。
謝謝!
嘗試使用PhotoShop或Adobe Bridge進行此操作。他們做得更好! – 2013-03-16 02:21:05