public Image ResizeImage(Image image, int newWidth, int newHeight)
{
// Algorithm to resize proportionally the image
// 2.) Determine the target image ratio and the file's image ratio (width divided by depth)
// 3.) If the file's image ratio is greater-than the target image ratio, then we know that
// we have to size proportionally based on WIDTH, otherwise we size proportionally based
// on HEIGHT (and if it was not a valid image, return an empty resize string)
double originalRatio = (double) image.Width / image.Height;
double standardRatio = (double) newWidth / newHeight;
// Constraint the sizes
if (originalRatio > standardRatio)
newHeight = (int) (image.Height * newWidth / image.Width);
else
newWidth = (int) (image.Width * newHeight / image.Height);
System.Drawing.Image result = new Bitmap(newWidth, newHeight);
System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(result);
// Set the quality options
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = SmoothingMode.HighQuality;
graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphic.CompositingQuality = CompositingQuality.HighQuality;
// Draw the image with the resized dimensions
graphic.DrawImage(image, 0, 0, newWidth, newHeight);
return result;
}
|