Доброго время суток.
Нужно повысить качество сжатия изображения при выгрузке. Суть в том что если пользователь выгружает большое изображения к примеру 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.';
?>