django-cropduster is a project that makes a form field available that
uses the Jcrop jQuery plugin. It is a drop-in
replacement for django's ImageField
and allows users to generate multiple crops
from images, using predefined sizes and aspect ratios. django-cropduster
was created by developers at The Atlantic. It
is compatible with python 2.7 and 3.4, and Django versions 1.4 - 1.8.
The recommended way to install django-cropduster is from PyPI:
pip install django-cropduster
Alternatively, one can install a development copy of django-cropduster from source:
pip install -e git+git://github.com/theatlantic/django-cropduster.git#egg=django-cropduster
If the source is already checked out, use setuptools:
python setup.py develop
To enable django-cropduster, "cropduster"
must be added to INSTALLED_APPS
in settings.py and you must include cropduster.urls
in your django
urlpatterns.
# settings.py
INSTALLED_APPS = (
# ...
'cropduster',
)
# urls.py
urlpatterns = patterns('',
# ...
url(r'^cropduster/', include('cropduster.urls')),
)
class Size(name, [label=None, w=None, h=None, auto=None,
min_w=None, min_h=None, max_w=None, max_h=None, required=True])
Use Size
to define your crops. The auto
parameter can be set to a list of
other Size
objects that will be automatically generated based on the
user-selected crop of the parent Size
.
CropDusterField
accepts the same arguments as Django's built-in ImageField
but with an additional sizes
keyword argument, which accepts a list of
Size
objects.
An example models.py:
from cropduster.models import CropDusterField, Size
class ExampleModel(models.Model):
MODEL_SIZES = [
# array of Size objects for initial crop
Size("large", w=210, auto=[
# array of Size objects auto cropped based on container Size
Size('larger', w=768),
Size('medium', w=85, h=113),
# more sub Size objects ...
]),
# more initial crop Size objects ...
]
image = CropDusterField(upload_to="your/path/goes/here", sizes=MODEL_SIZES)
To get a dictionary containing information about an image within a template,
use the get_crop
templatetag:
{% load cropduster_tags %}
{% get_crop obj.image 'large' exact_size=1 as img %}
{% if img %}
<figure>
<img src="{{ img.url }}" width="{{ img.width }}" height="{{ img.height }}"
alt="{{ img.caption }}" />
{% if img.attribution %}
<figcaption>
{{ img.caption }} (credit: {{ img.attribution }})
</figcaption>
{% endif %}
</figure>
{% endif %}
The django code is licensed under the
Simplified BSD License. View
the LICENSE
file under the root directory for complete license and copyright
information.
The Jcrop jQuery library included is used under the MIT License.