Ein Bild proportional skalieren

Mit einer Matrix lässt sich ein Bild sehr einfach proportional skalieren.  Die folgende Funktion skaliert ein BitmapData – Object proportional und hält die eingegebenen Maximalgrößen ein.

// image ist ein verknüpftes Bild in der Bibliothek
var c:BitmapData = new image(0,0);

// skalieren und anzeigen
var b:Bitmap = new Bitmap(getScaledBitmapData(c, 100, 100));

// Glättung des Bildes, fall man noch mehr machen möchte (rotieren etc)
b.smoothing = true; 

addChild(b);

/**
 * Skaliert ein BitmapData-Object proportional
 * @param scale 	Das BitmapData-Object
 * @param maxWidth	maximale Breite
 * @param maxHeight	maximale Höhe
 *
 * @return 	ein neues skaliertes BitmapData-Object
 */
function getScaledBitmapData(scale:BitmapData, maxWidth:Number, maxHeight:Number):BitmapData
{
	// Skalierungsfactor berechnen
	var wt:Number = maxWidth / scale.width;
	var ht:Number = maxHeight / scale.height;

	// kleinsten Wert bestimmen, damit maxWidth oder maxHeight nicht überschritten wird
	var factor:Number = Math.min(ht, wt);

	// Matrix mit Skalierungsfaktor erstellen und ein neues BitmapData-Object erstellen
	var m:Matrix = new Matrix();
	m.scale(factor, factor);
	var bd:BitmapData = new BitmapData(scale.width * factor, scale.height * factor, false);
	bd.draw(scale, m, null, null, null, true);
	return bd;
}
Teilen macht glücklich!
  • facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon
  • Google Bookmarks
  • email
  • RSS

Tags: , ,

Kommentar hinterlassen

*