Делаю мультизагрузку изображения на сервер.
Не получается реализовать уменьшения изображения. Хочу сделать так, что если фотка больше заданных ширины и высоты, то она уменьшалась до этих размеров. Как я понимаю для этого используется 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>