Scale an Image in C# Preserving Aspect Ratio

If you need to change the size of an Image without changing the ratio of X to Y then this function should do what you want.
The input parameters maxWidth and maxHeight define the largest values that you want to get back out of the image after it has been scaled.
public static Bitmap ScaleImage(Bitmap bmp, int maxWidth, int maxHeight)
{
var ratioX = (double)maxWidth / bmp.Width;
var ratioY = (double)maxHeight / bmp.Height;
var ratio = Math.Min(ratioX, ratioY);
var newWidth = (int)(bmp.Width * ratio);
var newHeight = (int)(bmp.Height * ratio);
var newImage = new Bitmap(newWidth, newHeight);
using (var graphics = Graphics.FromImage(newImage))
graphics.DrawImage(bmp, 0, 0, newWidth, newHeight);
return newImage;
}
Results of Scaling an Image
Here is a test image that we loaded into the scale function.
And here it is after calling for a maxWidth of 5000 and a maxHeight of 200.
You can see that the maxHeight of 200 was obeyed and the image was scaled while maintaining a proper aspect ratio.
Other Image Processing Guides
You may want to check out some of our other Image Processing Guides in C#.
i want to change the pas word becouse the also chenge the pass word
Thank you very much! I was trying to implement something similar in Java and your algorithm helped to solve my problem.
I want to convert this picture to reactangle.Is this possible?