Показать сообщение отдельно
Старый 19.07.2012, 13:59
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 1  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию High quality Resize Crop And Upload IMG

Доброго время суток.
Нужно повысить качество сжатия изображения при выгрузке. Суть в том что если пользователь выгружает большое изображения к примеру 1024х840, размер окна для обрезки изображения всеголишь в 420х420. Картинка в итоге очень плохо отображается. На выходе мы должны получить три размера, 250х250, 114х114 и 65х65.
Делаю это так
Код AS3:
private function createBitmap(e:MouseEvent=null):void {
 
	if (!BitmapMatrix.init) {
		BitmapMatrix.init = true;
 
		BitmapMatrix.size = new Array(250,114,65); // Нужные размеры
		BitmapMatrix.status = new Array(); // Статус готовности
		BitmapMatrix.Bitmapdata = new Object(); // Объект для храрения битмапдаты
		BitmapMatrix.Bitmap = new Object(); // Объект для храрения битмапов
	}
 
	img_preview.mask = null; // Удаляем маску
 
	for (var index in BitmapMatrix.size) // перебираем нужные размеры
	{
 
		// Определяем коефициент на который подгонит изображение пож нужный размер
		var factor = BitmapMatrix.size[index]/Math.min(img_preview.img.height,img_preview.img.width);
 
 
		// Подгонка изображения
		img_preview.img.height *= factor;
		 img_preview.img.width *= factor; 
 
		BitmapMatrix.status[BitmapMatrix.size[index]] = true; // Устанавливаем статус готовности
 
		// Создаём  битмапдату
		BitmapMatrix.Bitmapdata[BitmapMatrix.size[index]] = new BitmapData(BitmapMatrix.size[index], BitmapMatrix.size[index]);
 
		// Создаём битмап
		BitmapMatrix.Bitmap[BitmapMatrix.size[index]] = new Bitmap(BitmapMatrix.Bitmapdata[BitmapMatrix.size[index]]);
 
		// Снимаем снимок
		BitmapMatrix.Bitmapdata[BitmapMatrix.size[index]].draw(img_preview);
	}
	//viewborder.visible = true;
 
	img_preview.mask = masked; // Устанвлавием макску
 
	addChild(BitmapMatrix.Bitmap[250]); // Делаем тестовый спрайт
	//stabilizationCSS();
}
Выгрузка на сервер
Код AS3:
private function uploadBitmap($size):void {
 
	try {
		cache.temp = cache.send.response;
	} catch (e:Error) {};
 
 
	var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");
	var loader = new URLLoader("http://server.com/upload.php?name="+cache.name);
	var jpg:JPGEncoder = new JPGEncoder(80);
	var ba:ByteArray = jpg.encode(BitmapMatrix.Bitmapdata[$size]);
 
	var myRequest:URLRequest = new URLRequest(s);
 
	myRequest.requestHeaders.push(header);
	myRequest.method = URLRequestMethod.POST;
	myRequest.data = ba;
 
	loader.load(myRequest);
 
	loader.addEventListener(Event.COMPLETE,uploadBitmapControl);
}
PHP код:
<?php
if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] ))
{
    
$line $_GET['name'];
    
    
$im $GLOBALS["HTTP_RAW_POST_DATA"];


    
$fp fopen($line'wb');
    
fwrite($fp$im);
    
fclose($fp);

    
//echo the fileName;
    
echo $line;
}  else echo 
'result=An error occured.';
?>
__________________
return this...