GitXplorerGitXplorer
c

sorl-thumbnail-async

public
22 stars
15 forks
2 issues

Commits

List of commits on branch master.
Unverified
7c2c477078f7030f36bf97f64d64eeade295091d

Doc fix

sshanx committed 11 years ago
Unverified
032df4b3347c07fa9b4e2129854a5dff55e7456d

Fixed bugs

sshanx committed 11 years ago
Unverified
c4aa296eadef0045fac08eee1070149814d3fb5c

Added get_thumbnail to docs and improved examples

sshanx committed 11 years ago
Unverified
8721ec0e6f6ac82887f1b9f2fa44f91c98c887a6

Added get_thumbnail function that works with defined aliasses

sshanx committed 11 years ago
Unverified
7edf3e32ae0160c669721bf7c3c0d89ecd901d9b

Doc fixes

sshanx committed 11 years ago
Unverified
7ae6fb32762e43d7f945306ea5e81a883619ffaa

Doc fixes

sshanx committed 11 years ago

README

The README file for this repository.

sorl-thumbnail-async

Asynchronous thumbnailing app in django with remote storages like S3. This is modifications of some parts of sorl-thumbnail, which is a bit slow when used with remote storages.

  • Celery is used to create thumbnail asynchronously.
  • Thumbnails are pregenerated and cached.
  • Thumbnail sizes and options are specified in one place (your settings file).

Install

pip install sorl-thumbnail-async

Add 'thumbnail' to your INSTALLED_APPS.

Dependencies

pip install django

pip install django-celery

pip install pillow

pip install sorl-thumbnail

Usage

In your settings.py add an option called THUMBNAIL_OPTIONS_DICT, defining all your thumbnail sizes:

THUMBNAIL_OPTIONS_DICT = {
        'small': {
                'geometry': '140x140',
                'crop': 'center'
        }
    }

In your models, use thumbnail.models.AsyncThumbnailMixin as a baseclass. Make sure that your model inherits from AsyncThumbnailMixin first. This will call celery task on save(), and create one or more thumbnails from the specified image field. Use class variable image_field_name to configure the field that contains the image. Defaults to picture.

Example:

from django.db import models

from sorl import thumbnail
from thumbnail.models import AsyncThumbnailMixin


class Book(AsyncThumbnailMixin, models.Model):
    image_field_name = 'cover_image'

	title = models.CharField(blank=False, max_length=255, db_index=True)
    cover_image = thumbnail.ImageField(upload_to='books/')

In templates:

{% load thumbnail_tags %}
{% thumbnail book.cover_image small as im %}
<img src"{{ im.url }}">
{% endthumbnail %}

In python code:

from thumbnail import get_thumbnail

book = Book.objects.get(title='Life of Pi')
thumbnail_url = get_thumbnail(book.cover_image, 'small').url

Settings

You can add as many sizes and option as needed. It is a python dictionary.

THUMBNAIL_OPTIONS_DICT = {
        'small': {
                'geometry': '140x140',
                'crop': 'center'
        }
    }

NOTE: sorl-thumbnail-async registers its own THUMBNAIL_BACKEND:

THUMBNAIL_BACKEND = 'sorl-thumbnail-async.thumbnail.backend.AsyncThumbnailBackend'

Bitdeli Badge