Прочёл этот, уже старый, топик. Очень понравилось решение. Набросал по нему статик принимающий DObject, возвращающий копию отрисованную в Bitmap. Может кому пригодится

.
Код:

Код AS3:
package su.fishr.display
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.geom.Matrix;
/**
* Вспомогательный класс для изменения
* размеров растрового изображения
* с максимальным сглаживанием.
*
* @version 1.0
* @playerversion Flash 9
* @langversion 3.0
* @author fishr
* @created 26.06.2011 20:12
*/
public final class SmoothResizeDObject
{
/**-------------------------------------------------------------------------------
*
* P U B L I C
*
* --------------------------------------------------------------------------------
*/
//{
/**
* Принимает DisplayObject исходного размера,
* возвращает копию объекта отрисованного в
* Bitmap требуемого размера.
*
*
* @param dObj любой объект наследующий DisplayObject
* @param prop одно из двух свойств объекта к которому требуется пропорционально изменить размер
* сообщенного объекта(height или width)
* @param size требуемый "выходной" размер
* @return объект преобразованный до нужного размера.
*/
public static function resizeDisplayObject(dObj:DisplayObject, prop:String, size:Number):Bitmap
{
var scale:Number;
var bitmap:DisplayObject;
bitmap = resizes( dObj, 1);
if ( dObj[prop] > size )
{
scale = .5;
while ( bitmap[prop] * scale > size )
{
bitmap = resizes( bitmap, scale );
}
}
else
{
scale = 2;
while ( bitmap[prop] * scale < size )
{
bitmap = resizes( bitmap, scale );
}
}
bitmap[prop] = size;
bitmap.scaleX !== 1? bitmap.scaleY = bitmap.scaleX: bitmap.scaleX = bitmap.scaleY;
return bitmap as Bitmap;
}
//}
/**-------------------------------------------------------------------------------
*
* P R I V A T E
*
* --------------------------------------------------------------------------------
*/
//{
private static function resizes(dObj:DisplayObject, scale:Number):Bitmap
{
var bitmapData:BitmapData = new BitmapData(dObj.width * scale, dObj.height * scale);
bitmapData.lock();
var scaleMatrix:Matrix = new Matrix();
scaleMatrix.scale( scale, scale );
bitmapData.draw( dObj,
scaleMatrix,
dObj.transform.colorTransform,
"normal",
null,
true);
var bitmap = new Bitmap(bitmapData, "auto", true);
bitmapData.unlock();
/// Удаляем отработавший объект
/// ...если это не тот который был принят
/// в арг. вызова...
if ( scale !== 1 )
{
with( Bitmap(dObj))
{
bitmapData.dispose();
bitmapData = null;
}
dObj = null;
}
return bitmap;
}
//}
}
}
Результат применения на растровом изображении размером 1300х2100.
Ресайзилось до ширины в 100 пикселей. Здесь немного увеличено.