Welcome to django-versatileimagefield’s documentation!¶
A drop-in replacement for django’s ImageField
that provides a flexible, intuitive and easily-extensible interface for creating new images from the one assigned to the field.
Click here for a quick overview of what it is, how it works and whether or not it’s the right fit for your project.
Compatibility¶
- Python:
- 2.7
- 3.4
- 3.5
- 3.6
Note
The 1.2 release dropped support for Python 3.3.x.
- Django:
- 1.8.x
- 1.9.x
- 1.10.x
- 1.11.x
Note
The 1.4 release dropped support for Django 1.5.x & 1.6.x.
Note
The 1.7 release dropped support for Django 1.7.x.
- Pillow >=2.4.0,<=4.0.0
- Django REST Framework:
- 3.4.x
- 3.5.x
- 3.6.x
Table of Contents¶
Release Notes¶
1.8.1¶
- Updated Pillow dependency. Pillow 2.4.0 thru 4.3.0 now supported in Python 2.7, 3.4, 3.5 and 3.6.
1.8¶
- Excluded tests from PyPI releases (thanks, @matthiask!).
- Fixed a bug with the widget if thumbnailing failed or crashed (thanks again, @matthiask!)
- Added a note about import problems when adding a new sizer/filter in Python 2.7 (thanks, @chubz!).
- Added LICENSE to package manifest (thanks, @sannykr!).
1.7.1¶
- Fixed a bug that prevented VersatileImageField from working when
null=True
with Django 1.11 (thanks, @szewczykmira!).
1.7.0¶
- Added support for Django 1.11 (thanks, @slurms and @matthiask!).
1.6.3¶
- Added support for Pillow 4.0 and Python 3.6 (thanks, @aleksihakli!)
- Improved docs for writing custom sizers and filters (thanks, @njamaleddine!)
1.6.2¶
- Added support for Pillow 3.4.2
1.6.1¶
- Logs are now created when thumbnail generation fails (thanks, @artursmet!!!).
- Added support for Django 1.10.x and djangorestframework 3.5.x.
- Fixed a bug that caused delete_all_created_images() to fail on field instances that didn’t have filtered, sized & filtered+sized images.
1.6¶
- Fixed a bug that prevented sized images from deleting properly when the field they were associated with was using a custom
upload_to
function. If you are using a customSizedImage
subclass on your project then be sure to check out this section in the docs. (Thanks, @Mortal!)
1.5¶
- Fixed a bug that was causing placeholder images to serialize incorrectly with
VersatileImageFieldSerializer
(thanks, @romanosipenko!). - Ensured embedded ICC profiles are preserved when creating new images (thanks, @gbts!).
- Added support for progressive JPEGs (more info here).
1.4¶
- Included JPEG resize quality to sized image keys.
- Added
VERSATILEIMAGEFIELD_SETTINGS['image_key_post_processor']
setting for specifying a function that will post-process sized image keys to create simpler/cleaner filenames.django-versatileimagefield
ships with two built-in post processors:'versatileimagefield.processors.md5'
and'versatileimagefield.processors.md5_16'
(more info here).
1.3¶
- Added the ability to delete images & cache entries created by a
VersatileImageField
both individually and in bulk. Relevant docs here.
1.2.2¶
- Fixed a critical bug that broke initial project setup (i.e. when
django.setup()
is run) when an app config path was included inINSTALLED_APPS
(as opposed to a ‘vanilla’ python module).
1.2.1¶
- Fixed a bug that caused
collectstatic
to fail when using placeholder images with external storage, like Amazon S3 (thanks, @jelko!). VersatileImageField
now returns its placeholder URL if.url
is accessed directly (previously only placeholder images were returned if a sizer or filter was accessed). Thanks (again), @jelko!
1.2¶
- Fixed a bug that caused
collectstatic
to fail when usingManifestStaticFilesStorage
(thanks, @theskumar!). - Dropped support for Python 3.3.x.
- Added support for Django 1.9.x.
1.1¶
- Re-added support for Django 1.5.x (by request, support for Django 1.5.x was previously dropped in the 0.4 release). If you’re using
django-versatileimagefield
on a Django 1.5.x project please be sure to read this bit of documentation. - Added support for Django REST Framework 3.3.x.
1.0.6¶
- Updated
VersatileImageFieldSerializer
to serve image URLs as absolute URIs (if its associated field’s storage class isn’t doing so already).- Formerly: /media/headshots/jane_doe_headshot.jpg
- Now: http://localhost:8000/media/headshots/jane_doe_headshot.jpg
1.0.5¶
- Fixed image preview on form validation errors (thanks, @securedirective!).
1.0.4¶
- Finessed/improved widget functionality for both optional and ‘PPOI-less’ fields (thanks, @SebCorbin!).
1.0.3¶
- Addressed Django 1.9 deprecation warnings (
get_cache
andimportlib
) - Enabled
VersatileImageField
formfield to be overriden via**kwargs
1.0.2¶
- Removed clear checkbox from widgets on required fields.
1.0.1¶
- Squashed a critical bug in OnDiscPlaceholderImage
1.0¶
- Added support for Django 1.8.
- Numerous documentation edits/improvements.
0.6.2¶
- Squashed a bug that caused the javascript ‘click’ widget to fail to initialize correctly when multiple VersatileImageFields were displayed on the same page in the admin.
- Added django.contrib.staticfiles integration to widgets.
0.6.1¶
- Squashed a bug that was throwing an
AttributeError
when uploading new images.
0.6¶
- Squashed a bug that raised a
ValueError
in the admin when editing a model instance with aVersatileImageField
that specifiedppoi_field
,width_field
andheight_field
. - Admin ‘click’ widget now works in Firefox.
django-versatileimagefield
is now available for installation via wheel.
0.5.4¶
- Squashed a bug that was causing the admin ‘click’ widget to intermittently fail
- Simplified requirements installation (which makes django-versatileimagefield installable by
pip<=1.6
)
0.5.3¶
- Changed
PPOIField
to beeditable=False
by default to address a bug that consistently raisedValidationError
in ModelForms and the admin
0.5.2¶
- Squashed a bug that prevented
PPOIField
from serializing correctly
0.5.1¶
- Squashed an installation bug with
pip
6+
0.5¶
- Added Python 3.3 & 3.4 compatibility
- Improved cropping with extreme PPOI values
0.4¶
- Dropped support for Django 1.5.x
- Introducing per-field placeholder image image support! (Note: global placeholder support has been deprecated.)
- Added the
VERSATILEIMAGEFIELD_USE_PLACEHOLDIT
setting (docs)
0.3.1¶
- Squashed a pip installation bug.
0.3¶
- Added a test suite with Travis CI and coveralls integration.
- Introduced support for Django REST Framework 3.0 serialization.
0.2.1¶
- Ensuring admin widget-dependent thumbnail images are created even if
VERSATILEIMAGEFIELD_SETTINGS['create_on_demand']
is set toFalse
0.2¶
- Introduced Django REST Framework support!
- Added ability to turn off on-demand image creation and pre-warm images to improve performance.
0.1.5¶
- 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).
0.1.4¶
- Overhauled how
CroppedImage
processes PPOI value when creating cropped images. This new approach yields significantly more accurate results than using the previously utilizedImageOps.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
0.1.3¶
- Added support for auto-rotation during pre-processing as dictated by ‘Orientation’ EXIF data, if available.
- Added release notes to docs
0.1.2¶
- Removed redundant javascript from ppoi ‘click’ widget (thanks, @theskumar!)
0.1.1¶
- Converted giant README into Sphinx-friendly RST
- Docs added to readthedocs
0.1¶
- Initial open source release