Want to resize images uploaded to Django on the fly? It's actually very simple. This solution requires the Python Imaging Library (PIL).
import Image class Company(models.Model): logo = models.ImageField(upload_to="static/images/logos") def save(self, force_insert=False, force_update=False): super(Company, self).save(force_insert, force_update) if self.id is not None: previous = Company.objects.get(id=self.id) if self.logo and self.logo != previous.logo: image = Image.open(self.logo.path) image = image.resize((96, 96), Image.ANTIALIAS) image.save(self.logo.path)
Updated: Django 1.2 requires that you save the file FIRST, otherwise the path will not be correct.