Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.09.2010, 14:25
sqrt вне форума Посмотреть профиль Отправить личное сообщение для sqrt Найти все сообщения от sqrt
  № 1  
Ответить с цитированием
sqrt
[+4 04.10.07]
[+6 22.12.07]

Регистрация: 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>

Старый 06.09.2010, 15:28
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 2  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
sqrt я делаю сразу же при загрузке и потом с этим изображением работаю далее.
Как то так:
Код AS3:
		private function makeValidBitmapData($bitmapData:BitmapData):BitmapData						// тут ужимаем нашу битмапу до нужных размеров для передачи и отдаем новую
		{
			if ($bitmapData.width <= ApplicationData.BIG_PIC_SIZE && $bitmapData.height <= ApplicationData.BIG_PIC_SIZE)
				return $bitmapData.clone();															// если фото итак подходит, то возвращем его же
			var myMatrix	:Matrix = new Matrix();													// матрица преобразований, будим крутить и перемещать фотку
			var coefW		:Number = ApplicationData.BIG_PIC_SIZE / $bitmapData.width;			
			var coefH		:Number = ApplicationData.BIG_PIC_SIZE / $bitmapData.height;
			var multiplier	:Number;
			if (coefW > coefH)	{ multiplier = coefH; }  											// если фотка горизонтальная
			else 				{ multiplier = coefW; }												// если вертикальная или квдарат)
 
			myMatrix.createBox(multiplier, multiplier, 0, 0, 0);//scaleX,scaleY,rotation,x,y вот интересная фишка!!
 
			var newBitmapData:BitmapData = new BitmapData(multiplier * $bitmapData.width, multiplier * $bitmapData.height, true, 0xFFFFFF);// делаем новую битмапу, сюда срисуем все
				newBitmapData.draw($bitmapData, myMatrix , null, null, null, true);					// срисовываем
 
 
			return newBitmapData;
		}

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
bitmap , filereferencelist , flex , загрузка изображения
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.