Skip to main content

Thumbnails for Django

Project description

Jazzband sorl-thumbnail on PyPI Supported Python versions Supported Python versions Documentation for latest version gh-actions Coverage

Thumbnails for Django.

Features at a glance

  • Support for Django 4.2, 5.0, 5.1, and 5.2 following the Django supported versions policy

  • Storage support

  • Pluggable Engine support for Pillow, ImageMagick, PIL, Wand, pgmagick, and vipsthumbnail

  • Pluggable Key Value Store support (cached db, redis, and dynamodb by AWS)

  • Pluggable Backend support

  • Admin integration with possibility to delete

  • Dummy generation (placeholders)

  • Flexible, simple syntax, generates no html

  • ImageField for model that deletes thumbnails (only compatible with django 1.2.5 or less)

  • CSS style cropping options

  • Back smart cropping, and remove borders from the images when cropping

  • Margin calculation for vertical positioning

  • Alternative resolutions versions of a thumbnail

Read more in the documentation (latest version)

Developers

Jazzband

This is a Jazzband project. By contributing you agree to abide by the Contributor Code of Conduct and follow the guidelines.

Feel free to create a new Pull request if you want to propose a new feature. If you need development support or want to discuss with other developers join us in the channel #sorl-thumbnail at freenode.net or Gitter.

For releases updates and more in deep development discussion use our mailing list in Google Groups.

Tests

The tests should run with tox. Running tox will run all tests for all environments. However, it is possible to run a certain environment with tox -e <env>, a list of all environments can be found with tox -l. These tests require the dependencies of the different engines defined in the documentation. The easiest way to run tests is using Docker - see the contributing documentation for detailed instructions on running tests locally with Docker.

User Support

If you need help using sorl-thumbnail browse https://stackoverflow.com/questions/tagged/sorl-thumbnail and posts your questions with the sorl-thumbnail tag.

How to Use

Get the code

Getting the code for the latest stable release use ‘pip’.

$ pip install sorl-thumbnail

Install in your project

Then register ‘sorl.thumbnail’, in the ‘INSTALLED_APPS’ section of your project’s settings.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'sorl.thumbnail',
]

Templates Usage

All of the examples assume that you first load the thumbnail template tag in your template.:

{% load thumbnail %}

A simple usage.

{% thumbnail item.image "100x100" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

See more examples in the section Template examples in the Documentation

Model Usage

Using the ImageField that automatically deletes references to itself in the key value store and its thumbnail references and the thumbnail files when deleted. Please note that this is only compatible with django 1.2.5 or less.:

from django.db import models
from sorl.thumbnail import ImageField

class Item(models.Model):
    image = ImageField(upload_to='whatever')

See more examples in the section Model examples in the Documentation

Low level API

You can use the ‘get_thumbnail’:

from sorl.thumbnail import get_thumbnail
from sorl.thumbnail import delete

im = get_thumbnail(my_file, '100x100', crop='center', quality=99)
delete(my_file)

See more examples in the section Low level API examples in the Documentation

Using in combination with other thumbnailers

Alternatively, you load the templatetags by {% load sorl_thumbnail %} instead of traditional {% load thumbnail %}. It’s especially useful in projects that do make use of multiple thumbnailer libraries that use the same name (thumbnail) for the templatetag module:

{% load sorl_thumbnail %}
{% thumbnail item.image "100x100" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

Frequently asked questions

Is so slow in Amazon S3!

Possible related to the implementation of your Amazon S3 Backend, see the issue #351 due the storage backend reviews if there is an existing thumbnail when tries to generate the thumbnail that makes an extensive use of the S3 API

A fast workaround if you are not willing to tweak your storage backend is to set:

THUMBNAIL_FORCE_OVERWRITE = True

So it will avoid to overly query the S3 API.

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

sorl_thumbnail-13.0.0.tar.gz (669.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sorl_thumbnail-13.0.0-py3-none-any.whl (43.1 kB view details)

Uploaded Python 3

File details

Details for the file sorl_thumbnail-13.0.0.tar.gz.

File metadata

  • Download URL: sorl_thumbnail-13.0.0.tar.gz
  • Upload date:
  • Size: 669.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for sorl_thumbnail-13.0.0.tar.gz
Algorithm Hash digest
SHA256 75f1f22fa742846917ca4774cd4c578cd802ff5e4f6f53328735c3a38264ee49
MD5 eb3b3ad1f5b625e71bfcbd9469031830
BLAKE2b-256 c4d8038201e8fc4bda7f7905c41155af70fc0d15f94f90baac52f04ea66ad3af

See more details on using hashes here.

File details

Details for the file sorl_thumbnail-13.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sorl_thumbnail-13.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8035d218b2b90511326c9a73dbf6e8a829f9ea808e448e98332190a0e2c0ee18
MD5 c2c4ccc08139071a4b8983cdc0cda83f
BLAKE2b-256 ea8b04d8eaaffbdfc17792b008d7bdf0b379e6bb2648ce262e96c95f76f4ba7c

See more details on using hashes here.

Supported by

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