scaling an image, but keep its proportions

mrblah picture mrblah · Dec 30, 2009 · Viewed 9.1k times · Source

I want to scale images, but I don't want the image to look skewed.

The image has to be 115x115 (length x width).

The image can't be over 115 pixels high (length), but if needed, the width can be less than 115 but not more.

Is this tricky?

Answer

Brij picture Brij · Dec 30, 2009

You need to preserve aspect ratio:

float scale = 0.0;

    if (newWidth > maxWidth || newHeight > maxHeight)
    {
        if (maxWidth/newWidth < maxHeight/newHeight)
        {
            scale = maxWidth/newWidth;
        }
        else
        {
            scale = maxHeight/newHeight;
        }
        newWidth = newWidth*scale;
        newHeight = newHeight*scale;

    }

In the code, Initially newWidth/newHeight are width/Height of image.