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

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
часто сталкиваюсь с такой проблемой... весной написал такой вот код... Юзаю по надобности, выдрал с первого попавшегося проекта... потому, лишнее думаю выбросите сами, что нужно добавите... В принципе меня это качество устраивает.
Здесь по соображениям производительности использовался PNG энкодер, так как только на экран нужно было превьюшки выводить... Замена на JPEG на качество не повлияет...
Код AS3:
private function resize(loader:Loader):void {
 
			if (Math.max(loader.width,loader.height) > 100 ) {				
 
				var bit:BitmapData = new BitmapData(loader.width, loader.height, false);			
				bit.draw(loader, loader.transform.matrix);			
				loader.unload();
 
				var d:Bitmap=new Bitmap(bit,"auto",true);
				d.width=100;
				d.scaleY=d.scaleX;
 
				var bit2:BitmapData=new BitmapData(d.width,d.height,false);
				bit2.draw(d,d.transform.matrix);
 
				var v:Bitmap=new Bitmap(bit2);
 
				var png:ByteArray = PNGEncoder.encode(bit2);
 
				loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaded);
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, resized);
				loader.loadBytes(png);
 
			}else {
				resized(null);				
				}
		}