Roger wrote:

I need to calculate the thumbnail sizes PILL will produce from an image.

In most cases I can divide and round by adding .5, but PIL seems to

round differently on odd sized images.

For example, I want to reduce an 800x816 image to have a maximum size of

697. (697/816) * 800 = 683.33, so my rounding results in 683. But PIL

produces an image of 684x697.

the algorithm is:

x, y = im.size

if x > size[0]: y = max(y * size[0] / x, 1); x = size[0]

if y > size[1]: x = max(x * size[1] / y, 1); y = size[1]

size = x, y

that is, it shrinks the image horizontally first, and it then shrinks the

resulting image vertically:

816 * 697 / 800
710 697 * 697 / 710

684

</F>