2014-01-11 6 views
0

Я редактирую воздушное приложение для клиента, и он хочет, чтобы изображения, которые вы импортируете, масштабировались до 650x650, когда вы их сохраняете, используя приведенный ниже код. Я попытался изменить значения, но когда изображение экспортируется какая-то часть отсутствует:Как масштабировать BitmapData AS3?

function menuItemClick1(event:Event):void{ 
    var mat:Matrix = new Matrix(); 
    mat.scale(2.0,2.0); 
    var bmpData:BitmapData = new BitmapData(this.template_mc.width * 2, this.template_mc.height * 2, false, 0xFFFFFF); 
    bmpData.draw(this.template_mc, mat); 
    var _bmp:Bitmap = new Bitmap(bmpData); 
    _bmp.smoothing = true; 
    // 
    imgBytes = PNGEncoder.encode(_bmp.bitmapData); 
    fs = new FileStream(); 
    targetFile = File.desktopDirectory.resolvePath("icons/image.png"); 
    targetFile.browseForSave("Save Your File"); 
    targetFile.addEventListener(Event.SELECT, onSaveSelect); 
} 

Я попытался изменить к этому не повезло:

mat.scale(1.0,1.0); 
var bmpData:BitmapData = new BitmapData(650,650, false, 0xFFFFFF); 

ответ

1

отношение матрица масштаба Рассчитать этот путь:

var mat:Matrix = new Matrix(); 
var ratio:Number =Math.min(650/this.template_mc.width,650/this.template_mc.height); 
mat.scale(ratio,ratio); 
var bmpData:BitmapData = new BitmapData(650, 650, false, 0xFFFFFF); 
bmpData.draw(this.template_mc, mat); 
+1

Кроме того, если вы хотите, чтобы экспортированное растровое изображение было растянуто (то есть не равномерно масштабировано), вы можете сделать «mat.scale (650/template_mc.width, 650/template_mc.height)»; таким образом, все Результирующая битовая карта 650x650 будет содержать i Маг из MC, о котором идет речь, без каких-либо белых границ. – Vesper

+0

Спасибо, оба они отлично работали. – lonewulf

Смежные вопросы