9

I am using easy-thumbnails in my Django 1.5 project to generate thumbnail images.

I have been using several different sizes for thumbnails for testing, but now I would like to clear all thumbnails from my filesystem and from the easy-thumbnails database entries. Over time I created several different sizes of many images and I would like to remove those now.

My intention is to start with a clean slate and to remove all thumbnail images. I could not find out how to do that.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
yellowcap
  • 3,985
  • 38
  • 51

2 Answers2

10

Just had the same problem.

Given:

class MyModel(Model):
    image = ThumbnailerImageField()

You can delete all thumbnails with:

for m in MyModel.objects.all():
    m.image.delete_thumbnails()

If you instead have:

class MyModel(Model):
    image = ImageField()

Then you should use:

from easy_thumbnails.files import get_thumbnailer

for m in MyModel.objects.all():
    thumbnailer = get_thumbnailer(m.image)
    thumbnailer.delete_thumbnails()
knite
  • 6,033
  • 6
  • 38
  • 54
6

I have created a Picture model in which I added a method, as follows

from easy_thumbnails.models import Source, Thumbnail
def clean_thumbnail(self):
    if self.image:
        sources = Source.objects.filter(name=self.image.name)
        if sources.exists():
            for thumb in Thumbnail.objects.filter(source=sources[0]):
                try:
                    os.remove(os.path.join(settings.MEDIA_ROOT, thumb.name))
                    thumb.delete()
                except Exception, e:
                    logger.warning(e)

And it works like a charm.

Steve K
  • 10,879
  • 4
  • 39
  • 39