import os
import Image
from django.template import Library
register = Library()
def thumbnail(file, size='200x200'):
# defining the size
x, y = [int(x) for x in size.split('x')]
# defining the filename and the miniature filename
basename, format = file.rsplit('.', 1)
miniature = basename + '_' + size + '.' + format
miniature_filename = os.path.join(settings.MEDIA_ROOT, miniature)
miniature_url = os.path.join(settings.MEDIA_URL, miniature)
# if the image wasn't already resized, resize it
if not os.path.exists(miniature_filename):
print '>>> debug: resizing the image to the format %s!' % size
filename = os.path.join(settings.MEDIA_ROOT, file)
image = Image.open(filename)
image.thumbnail([x, y]) # generate a 200x200 thumbnail
image.save(miniature_filename, image.format)
return miniature_url
register.filter(thumbnail)
Comments
Shouldn't there be something like
at the end of the snippet?
#
the first thing which I've noticed is that thumbnail was not regenerated when I replaced main image. I suggest fix so thumbnail is removed (and then regenerated) when its outdated. I also had to move up filename= line.
#
also... Thumbnails are bad quality, I recommend adding anti aliasing when resizing:
#
For people like me using filestorage (http://code.djangoproject.com/ticket/5361), this is the working modified code.
#
Correction to version 1.0 alpha 2
#
Snippet update http://www.djangosnippets.org/snippets/955/
#