Показать сообщение отдельно
Старый 02.09.2010, 14:25
sqrt вне форума Посмотреть профиль Отправить личное сообщение для sqrt Найти все сообщения от sqrt
  № 1  
Ответить с цитированием
sqrt

Регистрация: Jul 2007
Сообщений: 48
По умолчанию Мультизагрузка и уменьшение изображение на стороне клиента

Делаю мультизагрузку изображения на сервер.

Не получается реализовать уменьшения изображения. Хочу сделать так, что если фотка больше заданных ширины и высоты, то она уменьшалась до этих размеров. Как я понимаю для этого используется Bitmap.

Помогите решить данную проблему. И как лучше уменьшать изображение? При открытии его или непосредственно перед отправкой.

Вот код

Код AS3:
 
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="568" height="300" initialize="init()">
	<mx:List x="10" y="58" width="326" id="photoList" dataProvider="{photos}" itemRenderer="Thumb" verticalScrollPolicy="on" height="218" itemClick="onSel()"></mx:List>
	<mx:Button x="10" y="28" label="Выбрать файлы" id="SelectPhotosButton" click="selectPhotos()"/>
	<mx:Button x="138" y="28" label="Загрузить" id="UploadPhotosButton"/>
	<mx:ProgressBar x="10" y="284" id="photosProgress" mode="manual" labelPlacement="bottom" height="16" minimum="0" maximum="100" indeterminate="false" visible="false"/>
	<mx:Button x="214.5" y="280" label="Отмена" width="72" height="16" id="CancelUpload" visible="false"/>
 
 
 
 
 
	<mx:Script>
	<![CDATA[
 
		import mx.controls.Alert;
		import mx.events.CollectionEvent;
		import flash.net.FileReferenceList;
		import mx.collections.ArrayCollection;
		import flash.net.FileReference;
		import flash.utils.ByteArray;
		import flash.display.Loader;
		import flash.display.Bitmap;
 
 
 
 
 
 
		[Bindable]
		private var photos:ArrayCollection = new ArrayCollection;	
		private var frList:FileReferenceList = new FileReferenceList;
		private var bitmap: Bitmap;
		private static const MAX_WIDTH: Number = 800;
		private static const MAX_HEIGHT: Number = 600;
 
 
		private function init():void
		{
 
 
			frList.addEventListener(Event.SELECT,onFileSelected);
		}
 
 
		private function selectPhotos():void
		{
			var fileFilter:FileFilter = new FileFilter("Изображения jpeg","*.jpg;*.jpeg");
			frList.browse([fileFilter]);
 
		}
 
		public function onFileSelected(evt:Event):void 
        { 
 
 
            for (var i:uint = 0; i < frList.fileList.length; i++)
			{
				var elem:Object = new Object;
				elem.fr = FileReference(frList.fileList[i]);
				elem.fr.addEventListener(ProgressEvent.PROGRESS, onProgress); 
             	elem.fr.load();
             	elem.fr.addEventListener(Event.COMPLETE, onComplete);
 
				photos.addItem(elem);
			}
 
        }
		public function onProgress(evt:ProgressEvent):void 
        { 
           photosProgress.visible=true;
           var numPerc:Number = Math.round((Number(evt.bytesLoaded) / Number(evt.bytesTotal)) * 100);
           photosProgress.setProgress(numPerc,100);
           photosProgress.validateNow();
 
        } 
        public function onComplete(evt:Event):void 
        { 
            photoList.invalidateList();
 
        }
 
 
		private function resizeBitmap( target : Bitmap ) : void
		{
			if ( target.height < target.width ) {
				target.width = MAX_WIDTH;
				target.scaleY = target.scaleX;
			} else if ( target.width <= target.height ) {
				target.height = MAX_HEIGHT;
				target.scaleX = target.scaleY;
			}
 
		}
 
		]]>
</mx:Script>
	<mx:Label x="173" y="0" text="Загрузка фотографии" fontWeight="bold" fontSize="12" textAlign="center"/>
 
 
 
 
 
</mx:Application>