Показать сообщение отдельно
Старый 16.08.2010, 22:47
GogElf вне форума Посмотреть профиль Отправить личное сообщение для GogElf Найти все сообщения от GogElf
  № 3  
Ответить с цитированием
GogElf

Регистрация: Aug 2010
Сообщений: 3
Я взял исходники загрузчика картинок, и хотел бы в нем изменять параметры картинок. То есть размеры, форматы и т.п. При поиске я находил примеры которые изменяли параметры изображений но выводили их непосредственно в приложение.
Я бы хотел узнать чего мне превращать в Bitmap и как сохранить изменения обратно?

Код AS3:
			private var photos:ArrayCollection					 = new ArrayCollection;	
			private var frList:FileReferenceList				 = new FileReferenceList;
			private static const _MAX_WIDTH	: Number			 = 640;
			private static const _MAX_HEIGHT: Number			 = 480;
			private var _bitmap	: Bitmap;
			private var _bitmapdata	: BitmapData;
			private static var load_file_length: Number			 = 0;
			private static var upload_file_length: Number		 = 0;
			private static var upload_file_length_all: Number	 = 0;
			private var PopUpM: Boolean							 = false;
			private var win:popupProgress;			
 
 
			private function init():void
			{
				photos.addEventListener(CollectionEvent.COLLECTION_CHANGE,function():void
				{ 
					startUploadButton.enabled = (photos.length > 0);
					clearPhotosButton.enabled = (photos.length > 0);
				});
				frList.addEventListener(Event.SELECT,addPhotos);
			}	
 
 
			private function selectPhotos():void
			{
				var fileFilter:FileFilter = new FileFilter("Изображения jpeg, png","*.jpg;*.jpeg;*.png");
				frList.browse([fileFilter]);
			}
 
			private function addPhotos(e:Event):void
			{
				if(PopUpM == false){
					PopUpM = true;
					win = PopUpManager.createPopUp(this, popupProgress, true) as popupProgress;
					//PopUpManager.centerPopUp(win);
					win.popupBox.width = gBox.width;
					win.popupBox.height = gBox.height;
					win.photosProgress.label = null;
					win.photosProgress.indeterminate = true;
				}
				for (var i:uint = 0; i < frList.fileList.length; i++)
				{
					var elem:Object = new Object;
					elem.fr = FileReference(frList.fileList[i]);
					elem.fr.load();
					elem.fr.addEventListener(Event.COMPLETE,refreshThumb);
					photos.addItem(elem);					
				}
			}
			private function refreshThumb(e:Event):void
			{
				if(win.photosProgress.indeterminate == true){
					win.photosProgress.indeterminate = false;
					win.photosProgress.label = 'Загрузка изображений в приложение. %1 из %2';
				}				
				win.photosProgress.setProgress(load_file_length++, frList.fileList.length);
				photosList.invalidateList();
				if(load_file_length == frList.fileList.length){
					load_file_length = 0;
					win.photosProgress.label = null;
					PopUpM = false;
					PopUpManager.removePopUp(win);
				}
			}
 
 
			private function clearPhotos():void
			{
				photos.removeAll();
			}
 
			public function clearPhoto(data:Object):void
			{
				photos.removeItemAt(photos.getItemIndex(data));
			}
 
			private function startUpload():void
			{
				if(PopUpM == false){
					PopUpM = true;
					win = PopUpManager.createPopUp(this, popupProgress, true) as popupProgress;
					//PopUpManager.centerPopUp(win);
					win.popupBox.width = gBox.width;
					win.popupBox.height = gBox.height;
					upload_file_length = 0;
					upload_file_length_all = photos.length;
				}				
				win.photosProgress.indeterminate = true;
 
				var request:URLRequest = new URLRequest();
				request.url = "http://localhost/upload.php";
				var fr:FileReference = photos.getItemAt(0).fr;
				fr.cancel();
				fr.addEventListener(ProgressEvent.PROGRESS,uploadProgress);
				upload_file_length++;
				fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA ,uploadComplete);
				fr.upload(request);
 
			}
 
			private function uploadProgress(e:ProgressEvent):void
			{
				win.photosProgress.indeterminate = false;
				win.photosProgress.label = 'Загрузка на сервер. Фотография '+upload_file_length+' из '+upload_file_length_all+' (%1 кб из %2 кб)';
				win.photosProgress.setProgress(e.bytesLoaded/1024,e.bytesTotal/1024);
			}
 
			private function uploadComplete(e:DataEvent):void
			{
				photos.removeItemAt(0);
				if (photos.length > 0) 
					startUpload();
				else
					PopUpM = false;
			}
 
			private function cancelUpload():void
			{
				photos.getItemAt(0).fr.cancel();					
			}


Последний раз редактировалось GogElf; 17.08.2010 в 22:10.