ResizeAndFit
public static Image ResizeAndFit(this Image image, Size newSize) { var sourceIsLandscape = image.Width > image.Height; var targetIsLandscape = newSize.Width > newSize.Height; var ratioWidth = (double)newSize.Width / (double)image.Width; var ratioHeight = (double)newSize.Height / (double)image.Height; var ratio = 0.0; if (ratioWidth > ratioHeight && sourceIsLandscape==targetIsLandscape) ratio = ratioWidth; else ratio = ratioHeight; int targetWidth = (int)(image.Width * ratio); int targetHeight = (int)(image.Height * ratio); var bitmap = new Bitmap(newSize.Width, newSize.Height); var graphics = Graphics.FromImage((Image)bitmap); graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; var offsetX = ((double)(newSize.Width - targetWidth)) / 2; var offsetY = ((double)(newSize.Height - targetHeight)) / 2; graphics.DrawImage(image, (int)offsetX, (int)offsetY, targetWidth, targetHeight); graphics.Dispose(); return (Image)bitmap; }Example:
Image image = Image.FromStream(context.Request.InputStream).ResizeAndFit(new Size( 125, 100));
Description
This method resizes a System.Drawing.Image and tries to fit it in the destination Size. The source image size may be smaller or bigger then the target size. Source and target layout orientation can be different. ResizeAndFit tries to fit it the best it can.
Details
- Author: Loek van den Ouweland
- Submitted on: 2/13/2009 12:51:14 PM
- Language: C#
- Type: System.Drawing.Image
- Views: 2162
Double click on the code to select all.