31 votes

Quel est le meilleur moyen de redimensionner un objet BitmapData?

Disons que j'ai un BitmapData de 600x600 et que je veux le réduire à 100x100.

63voto

Iain Points 4941

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);
 

18voto

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/

9voto

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;
}
 

1voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X