How do I resize an image using PIL and maintain its aspect ratio?
image, python, python-imaging-library, thumbnails
Solution
Define a maximum size. Then, compute a resize ratio by taking `min(maxwidth/width, maxheight/height)`.
The proper size is `oldsize*ratio`.
There is of course also a library method to do this: the method `Image.thumbnail`. Below is an (edited) example from the PIL documentation.
import os, sys
import Image
size = 128, 128
for infile in sys.argv[1:]:
outfile = os.path.splitext(infile)[0] + ".thumbnail"
if infile != outfile:
try:
im = Image.open(infile)
im.thumbnail(size, Image.Resampling.LANCZOS)
im.save(outfile, "JPEG")
except IOError:
print "cannot create thumbnail for '%s'" % infile
Problem
Is there an obvious way to do this that I'm missing? I'm just trying to make thumbnails.