Цитата(ziga @ 26.6.2013, 16:49) | Добрый день. Сразу говорю во флеше разбираюсь 3й день, так что сильно не бейте)
Написал простенькую флешку по примерам. Суть такова: при нажатии на кнопку открывается диалоговое окно для выбора фото, после нажатия на «ок» формируется лоадер и фото отправляется на сервер, сервер принимает поток и сохраняет фото в папке, всё прекрасно работает. Теперь вопрос, как мне это фото, прежде чем отправить уменьшить в размере ну скажем до 800х600 (600х800), и потом отправить уже уменьшенную копию на сервер.
Код | import flash.display.Sprite; import flash.events.MouseEvent; import flash.net.FileReference; //import flash.net.FileReferenceList; import flash.net.FileFilter; import flash.utils.ByteArray; import flash.events.MouseEvent; import flash.events.Event; import flash.events.IOErrorEvent; import flash.display.MovieClip; import fl.controls.ProgressBarMode; import flash.display.Bitmap; import flash.display.BitmapData; import avmplus.INCLUDE_ACCESSORS;
var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg; *.jpeg; *.gif; *.png"); var fileRefList:FileReference = new FileReference(); var loader:Loader; var fileName:String, request:URLRequest, urlLoader: URLLoader, strFileNoEx:String, reg:RegExp;
function opens(event:MouseEvent):void { fileRefList.addEventListener(Event.SELECT, selectHandler); fileRefList.addEventListener(Event.COMPLETE,onComplete);
urlLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE,completeHandlerUrlLoader);
fileRefList.browse([imageTypes]); }
function onComplete(event:Event):void {
loader = new Loader ;
loader.loadBytes(fileRefList.data);
//отправляем на сервер //reg = /\.\w+/;//регулярка вылавливающая расширение файла //strFileNoEx = fileRefList.name.replace(reg,''); //trace(strFileNoEx);//имя загруженного файла без расширения fileName = String(new Date().getTime());// + '.' + strFileNoEx;
request = new URLRequest( "http://localhost/save-file.php?name="+fileName+"&d="+new Date().getTime()); request.data = fileRefList.data; request.method = URLRequestMethod.POST; request.contentType = 'application/octet-stream'; urlLoader.load(request); }
function selectHandler(event:Event):void { try { fileRefList.load(); } // catch(illegalOperation:IllegalOperationError) ; catch (e:Error) { }
}
// File Upload Progress Function.; function completeHandlerUrlLoader(event:Event):void { ExternalInterface.call("myFunction", fileName); }
select_btn.addEventListener(MouseEvent.CLICK, opens);
|
|
Если каму интересно решение найдено
Код | import flash.display.Sprite; import flash.events.MouseEvent; import flash.net.FileReference; import flash.net.FileFilter; import flash.utils.ByteArray; import flash.events.MouseEvent; import flash.events.Event; import flash.events.IOErrorEvent; import flash.display.MovieClip; import fl.controls.ProgressBarMode; import flash.display.Bitmap; import flash.display.BitmapData; import avmplus.INCLUDE_ACCESSORS; import com.adobe.images.JPGEncoder; var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg; *.jpeg; *.gif; *.png"); var fileRefList:FileReference = new FileReference(); var loader:Loader; var fileName:String, request:URLRequest, urlLoader: URLLoader, bitmapData:BitmapData; function opens(event:MouseEvent):void { fileRefList.addEventListener(Event.SELECT, selectHandler); fileRefList.addEventListener(Event.COMPLETE,onComplete); urlLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE,completeHandlerUrlLoader); fileRefList.browse([imageTypes]); } function convertToSmallBitmap(bit:Bitmap):BitmapData { var w:Number = 800; var h:Number = 600; //var sourceBitmapData:BitmapData = new MyBitmapData(); var sx:Number = w / bit.width; var sy:Number = h / bit.height; var bitmap:Bitmap = new Bitmap( new BitmapData( w, h ) ); bitmap.bitmapData.draw( bit.bitmapData, new Matrix( sx, 0, 0, sy, 0, 0 ) ); return bitmap.bitmapData; } function onComplete1(event:Event):void { var smallBitmap:BitmapData = convertToSmallBitmap(loader.content as Bitmap); fileName = String(new Date().getTime()); request = new URLRequest( "http://localhost/save-file.php?name="+fileName+"&d="+new Date().getTime()); request.data = jpgEncoder.encode(smallBitmap); request.method = URLRequestMethod.POST; request.contentType = 'application/octet-stream'; urlLoader.load(request); } function onComplete(event:Event):void { loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete1); loader.loadBytes(fileRefList.data); } function selectHandler(event:Event):void { try { fileRefList.load(); } catch (e:Error) { } } function completeHandlerUrlLoader(event:Event):void { ExternalInterface.call("myFunction", fileName); } select_btn.addEventListener(MouseEvent.CLICK, opens);
|
|