I know, this is not nuclear physics, but it tricks my mind every once in a while when this occurs to me.
Let’s assume the general case of an image with dimensions w×h, and that you need to scale it down so that it fits within a certain rectangle sizing w0×h0, while its sides maintain the same ratio R=w/h.
In other words, we need to calculate a new pair of dimensions w’×h’ for our image, for which the following conditions must be satisfied:
(1) w’/h’ = w/h = R
(2) w’ ≤ w0
(3) h’ ≤ h0
Note that that the ratio of the constraining box w0/h0 is irrelevant to the ratio of the image R.
From the first of the above conditions (1) we get:
w’/h’ = w/h ⇒ w’·h = w·h’ ⇒ w’/w = h’/h = φ
which means that both the width (w) and the height (h) of the image must be scaled by the same factor φ; thus the problem is pretty much reduced to simply calculating the scaling factor φ.
Let’s take it a bit further by combining the last finding with the inequations (2) and (3):
w’/w = h’/h = φ ⇒ w’ = w/φ , h’ = h/φ ⇒ w/φ ≤ w0 , h/φ ≤ h0 ⇒ w/w0 ≤ φ , h/h0 ≤ φ .
From the last statement it is clear that all we need to do is to choose φ = max[ w/w0, h/h0].
To summarize, these are the steps we need to take:
1) φ = max[ w/w0, h/h0]
2) w’ = w/φ
3) h’ = h/φ
Or, if you please, the conditional equivalent:
Is w/w0 > h/h0 ?
then: w’ = w0 , h’ = w0·h/w
or else: w’ = h0·w/h , h’ = h0