In my AIR app, the user can take a photo (from CameraRoll or CameraUI) and save it to a server.
Is there a way to automatically resize the image (800x600) in order to have a lighter file ?
Here's my code :
var now:Date = new Date();
var saveDirectory:String= "MyApp/PhotoUploads";
var fileName:String = "MyPhoto" + now.fullYear + now.month + now.day + now.hours + now.minutes + now.seconds + ".jpg";
var photoFile:File=File.documentsDirectory.resolvePath(saveDirectory+"/"+ fileName);
function imageSelected( event:MediaEvent ):void{
var mp:MediaPromise = event.data;
dataSource = mp.open();
readMediaData();
}
function readMediaData():void{
var imageBytes:ByteArray = new ByteArray();
dataSource.readBytes( imageBytes );
var stream:FileStream = new FileStream();
stream.addEventListener( Event.CLOSE,photoFileSaved);
stream.openAsync( photoFile,FileMode.WRITE);
stream.writeBytes( imageBytes );
stream.close();
}
function photoFileSaved(evt:Event):void{
photoUpload();
}
function photoUpload():void{
photoFile.upload( req );
photoFile.addEventListener( ProgressEvent.PROGRESS, progress_func );
photoFile.addEventListener( IOErrorEvent.IO_ERROR, ioErrorMedia );
photoFile.addEventListener( Event.COMPLETE, complete_func );
}
Apparently I can't do :
mp.width = 200;
mp.height= 200;
So how can I do that ?
var scale:Number = .6;
var m:Matrix = new Matrix();
m.scale (scale,scale);
var bmp:BitmapData = new BitmapData(sourceMc.width, sourceMc.height, false);
bmp.draw (sourceMc,m);