Welcome to django-versatileimagefield’s documentation!¶
A drop-in replacement for django’s ImageField that provides a flexible, intuitive and easily-extensible interface for quickly creating new images from the one assigned to your field.
- Squashed CroppedImage bug that was causing black stripes to appear on crops of images with PPOI values that were to the right and/or bottom of center (greater-than 0.5).
- Overhauled how CroppedImage processes PPOI value when creating cropped images. This new approach yields significantly more accurate results than using the previously utilized ImageOps.fit function, especially when dealing with PPOI values located near the edges of an image or aspect ratios that differ significantly from the original image.
- Improved PPOI validation
- Squashed unset VERSATILEIMAGEFIELD_SETTINGS['global_placeholder_image'] bug.
- Set crop Sizer default resample to PIL.Image.ANTIALIAS
- Added support for auto-rotation during pre-processing as dictated by ‘Orientation’ EXIF data, if available.
- Added release notes to docs
- Converted giant README into Sphinx-friendly RST
- Docs added to readthedocs
- Initial open source release
In A Nutshell¶
Creates images anywhere you need them: not just in templates.
Non-destructive: Your original image is never modified.
Sizer and Filter framework: enables you to quickly add new – or modify existing – ways to create new images:
- Sizers create images with new sizes and/or aspect ratios
- Filters change the appearance of an image
Sizers can be chained onto Filters: Use case: give me a black-and-white, 400px by 400px square crop of this image.
Primary Point of Interest (PPOI) support: provides a way to specify where the ‘primary point of interest’ of each individual image is – a value which is available to all Sizers and Filters. Use case: sometimes you want the ‘crop centerpoint’ to be somewhere other than the center of an image. Includes a user-friendly formfield/widget for selecting PPOI in the admin (or anywhere else you use ModelForms).
Works with any storage: Stores the images it creates within the same storage class as your field (just like django’s FileField & ImageField). Works great with a local filesystem or external storage (like Amazon S3).
Fully interchangeable with ImageField: you can easily remove VersatileImageField from your project’s models whenever you’d like.
Integrated caching: References to created images are stored in the cache, keeping your application running quickly and efficiently.
Table of Contents¶
- Model Integration
- Specifying a Primary Point of Interest (PPOI)
- Using Sizers and Filters
- Writing Custom Sizers and Filters
TODO for v0.2¶
- Placeholder docs
- Programmatically delete images created by VersatileImageField (including clearing their connected cache keys)
- Management command for auto-generating sets of images (and pre-warming the cache)
- Templatetags for sizing/filtering static images