Skip to main content

A simple Django app to manage image/photo thumbnails. Supports remote/cloud storage systems like Amazon S3.

Project description

Build Status

Design:

  • Uses Django Storage API

  • Uses flexible meta data store. Database and Redis metadata backend supported at the moment.

Installation

  • Add thumbnails to INSTALLED_APPS in settings.py.

  • Run python manage.py migrate to create database metadata backend.

Usage

settings.py:

THUMBNAILS = {
    'METADATA': {
        'BACKEND': 'thumbnails.backends.metadata.DatabaseBackend',
    },
    'STORAGE': {
        'BACKEND': 'django.core.files.storage.FileSystemStorage',
        # You can also use Amazon S3 or any other Django storage backends
    }
    'SIZES': {
        'small': {
            'PROCESSORS': [
                {'PATH': 'thumbnails.processors.resize', 'width': 10, 'height': 10},
                {'PATH': 'thumbnails.processors.crop', 'width': 80, 'height': 80}
            ],
            'POST_PROCESSORS': [
                {
                    'processor': 'thumbnails.post_processors.optimize',
                    'png_command': 'optipng -force -o7 "%(filename)s"',
                    'jpg_command': 'jpegoptim -f --strip-all "%(filename)s"',
                },
            ],
        },
        'large': {
            'PROCESSORS': [
                {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20},
                {'PATH': 'thumbnails.processors.flip', 'direction': 'horizontal'}
            ],
        }
    }
}

If you prefer to use Redis as your metadata storage backend (like I do :):

THUMBNAILS = {
    'METADATA': {
        'PREFIX': 'thumbs',
        'BACKEND': 'thumbnails.backends.metadata.RedisBackend',
        'db': 2,
        'port': 6379,
        'host': 'localhost',
    },
}

In python:

from thumbnails.fields import ImageField

class Food(models.Model):
    image = ImageField()


food = Food.objects.latest('id')
food.image.thumbnails.all()
food.image.thumbnails.small  # Generates "small" sized thumbnail
food.image.thumbnails.large  # Generates "large" sized thumbnail
food.image.thumbnails.small.url  # Returns "small" sized thumbnail URL

django-thumbnails comes with a few builtin image processors:

# To use the following processors, put the arguments of processors in SIZES definition
thumbnails.processors.resize(width, height)
thumbnails.processors.rotate(degrees)
thumbnails.processors.flip(direction)
thumbnails.processors.crop(width, height, center)

Processors are applied sequentially in the same order of definition.

Management Commands

If you changed your size definition and want to regenerate the thumbnails, use:

python manage.py delete_thumbnails --model=app.Model --size=thumbnail_size_to_delete

Running Tests

To run tests:

`which django-admin.py` test thumbnails --settings=thumbnails.tests.settings --pythonpath=.

Changelog

Version 0.2.2

  • Fixed a RedisBackend.get_thumbnail() bug that may cause excessive trips to Redis. Thanks @marsha97!

Version 0.2.1

  • Add support for Django 1.11, 2.0 and 2.1

Version 0.2.0

  • Improves performance on fields that have a large number of thumbnails

  • Add support for Django 1.8, 1.9 and 1.10

Version 0.1.3

  • Fixes deprecation warning in Django 1.8

Version 0.1.2

  • Fixes deprecation warning in Django 1.8

Version 0.1.1

  • Use shortuuid instead of uuid4() to be more space efficient

Version 0.1.0

  • First public release

As of February 2015, this library is suitable for production use and has been used for more than a year in Stamps, an Indonesian based CRM/loyalty system.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-thumbnails-0.2.2.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

django_thumbnails-0.2.2-py2-none-any.whl (25.1 kB view details)

Uploaded Python 2

File details

Details for the file django-thumbnails-0.2.2.tar.gz.

File metadata

  • Download URL: django-thumbnails-0.2.2.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.18.3 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/2.7.17

File hashes

Hashes for django-thumbnails-0.2.2.tar.gz
Algorithm Hash digest
SHA256 42e34fc9c8724ae8715d34a2ec7d943e77bf958290bc9c2420cafe16540264bc
MD5 45855498bd8f36709ed5effba7634bb5
BLAKE2b-256 54ba9e494c31d3cc0a3fd7640ba74c3da7f92b540a837f92df4357815a8e1c8e

See more details on using hashes here.

File details

Details for the file django_thumbnails-0.2.2-py2-none-any.whl.

File metadata

  • Download URL: django_thumbnails-0.2.2-py2-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.18.3 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/2.7.17

File hashes

Hashes for django_thumbnails-0.2.2-py2-none-any.whl
Algorithm Hash digest
SHA256 93c9a6468bb20b02146a36e66b32e202428b35445ba597df16da09b26a15fba7
MD5 e39192a89854ad7a588b2a11b75a4146
BLAKE2b-256 a7ab167f296d1d94504a5ed18f12fcef0688e323789e7d9377b9050fc07ff464

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page