ensnare ensnare - 1 year ago 56
Python Question

What is the fastest way to generate image thumbnails in Python?

I'm building a photo gallery in Python and want to be able to quickly generate thumbnails for the high resolution images.

What's the fastest way to generate high quality thumbnails for a variety of image sources?

Should I be using an external library like imagemagick, or is there an efficient internal way to do this?

The dimensions of the resized images will be (max size):

120x120
720x720
1600x1600


Quality is an issue, as I want to preserve as many of the original colors as possible and minimize compression artifacts.

Thanks.

Answer Source

You want PIL it does this with ease

from PIL import Image
sizes = [(120,120), (720,720), (1600,1600)]
files = ['a.jpg','b.jpg','c.jpg']

for image in files:
    for size in sizes:
      Image.open(image).thumbnail(size).save("thumbnail_%s_%s" % (image, "_".join(size)))

If you desperately need speed. Then thread it, multiprocess it or get another language.