Disons que j'ai un BitmapData de 600x600 et que je veux le réduire à 100x100.
Réponses
Trop de publicités?Cela marche:
var scale:Number = 0.32;
var matrix:Matrix = new Matrix();
matrix.scale(scale, scale);
var smallBMD:BitmapData = new BitmapData(bigBMD.width * scale, bigBMD.height * scale, true, 0x000000);
smallBMD.draw(bigBMD, matrix, null, null, null, true);
var bitmap:Bitmap = new Bitmap(smallBMD, PixelSnapping.NEVER, true);
kajyr
Points
871
public function drawScaled(obj:DisplayObject, thumbWidth:Number, thumbHeight:Number):Bitmap {
var m:Matrix = new Matrix();
m.scale(WIDTH / obj.width, HEIGHT / obj.height);
var bmp:BitmapData = new BitmapData(thumbWidth, thumbHeight, false);
bmp.draw(obj, m);
return new Bitmap(bmp);
}
à partir de: http://www.nightdrops.com/2009/02/quick-reference-drawing-a-scaled-object-in-actionscript/
sodah
Points
71
avec lissage:
function BitmapScaled(do_source:DisplayObject, thumbWidth:Number, thumbHeight:Number):BitmapData {
var mat:Matrix = new Matrix();
mat.scale(thumbWidth/do_source.width, thumbHeight/do_source.height);
var bmpd_draw:BitmapData = new BitmapData(thumbWidth, thumbHeight, false);
bmpd_draw.draw(do_source, mat, null, null, null, true);
return bmpd_draw;
}
James Hay
Points
7830
Sans écrire le code moi-même. Pour ce faire, je voudrais créer un nouvel objet BitmapData de la taille souhaitée, puis utiliser la méthode bitmap.draw pour copier le plus grand dans le plus petit. La méthode bitmap.draw accepte également un argument de matrice que vous pouvez utiliser pour mettre à l'échelle lorsque vous copiez.