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:

import thumbnails

class Food(models.Model):
    image = thumbnails.Field()


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.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.1.2.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

django_thumbnails-0.1.2-py2-none-any.whl (24.6 kB view details)

Uploaded Python 2

File details

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

File metadata

File hashes

Hashes for django-thumbnails-0.1.2.tar.gz
Algorithm Hash digest
SHA256 68a5bdd59a08102798896b0ad0e17420e73e23e7350198c5b7a1501404b10ded
MD5 52cbd7c2f1f2c7c13f0a2686beb7f998
BLAKE2b-256 3d8df0af08fca5c7ad58ab92d51224769d093d0bbea20db0847bcf0109f79f0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_thumbnails-0.1.2-py2-none-any.whl
Algorithm Hash digest
SHA256 a5747a57113c25fe2d852f88d96b0f967dff8a05a39d86713ebdf3195bb3d05f
MD5 6817cadc4e2940f5c633e1de61193001
BLAKE2b-256 93c51aacd789816124b281505b776206e751d74ef46a9a5e93d999281e2ae5e3

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