2014-01-15 64 views

回答

0

http://programmerpayback.com/2010/01/21/use-silverlight-to-resize-images-and-increase-compression-before-uploading/

public static WriteableBitmap GetImageSource(Stream stream, double maxWidth, double maxHeight) 
{ 
     BitmapImage bmp = new BitmapImage(); 
     bmp.SetSource(stream); 

     Image img = new Image(); 
     img.Effect = new DropShadowEffect() { ShadowDepth = 0, BlurRadius = 0 }; 
     img.Source = bmp; 

     double scaleX = 1; 
     double scaleY = 1; 

     if (bmp.PixelHeight > maxHeight) 
      scaleY = maxHeight/bmp.PixelHeight; 
     if (bmp.PixelWidth > maxWidth) 
      scaleX = maxWidth/bmp.PixelWidth; 

     // maintain aspect ratio by picking the most severe scale 
     double scale = Math.Min(scaleY, scaleX); 

     return new WriteableBitmap(img, new ScaleTransform() { ScaleX = scale, ScaleY = scale }); 
    }