![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 3
|
Добрый день. Сразу говорю во флеше разбираюсь 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); |
|
|||||
|
Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
|
Чтобы изменить размер картинки, можно использовать метод draw вместе с матрицей, например, этот код берет из библиотеки картинку любого размера и масштабирует ее до 800х600:
var w:Number = 800; var h:Number = 600; var sourceBitmapData:BitmapData = new MyBitmapData(); var sx:Number = w / sourceBitmapData.width; var sy:Number = h / sourceBitmapData.height; var bitmap:Bitmap = new Bitmap( new BitmapData( w, h ) ); bitmap.bitmapData.draw( sourceBitmapData, new Matrix( sx, 0, 0, sy, 0, 0 ) ); this.addChild( bitmap );
__________________
В лесу родилась ёлочка, в лесу она росла! Зимой и летом... |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 3
|
а как мне в sourceBitmapData вставить загруженную картинку из fileRefList в моём примере
|
|
|||||
|
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
......... var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete); function onComplete(event:Event):void { loader.loadBytes(fileRefList.data); } function onLoaderComplete(event:Event):void { var smallBitmap:BitmapData = convertToSmallBitmap(loader.content as Bitmap); ..... request.data = smallBitmap.getPixels(smallBitmap.rect); ..... } |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 3
|
Файлы почему то битые на сервер попадают, может я делаю что то не так?
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; 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 = smallBitmap.getPixels(smallBitmap.rect); //request.data = fileRefList.data; 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);
Всем спасибо, получилось! вместо поменял на |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|