Welcome to django-versatileimagefield’s documentation!

Travis CI Status Coverage Status Latest Version

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.

Code

django-versatileimagefield is hosted on github.

Table of Contents

Release Notes

1.7.1

  • Fixed a bug that prevented VersatileImageField from working when null=True with Django 1.11 (thanks, @szewczykmira!).

1.7.0

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 custom SizedImage 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 in INSTALLED_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 using ManifestStaticFilesStorage (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

1.0.5

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 and importlib)
  • Enabled VersatileImageField formfield to be overriden via **kwargs

1.0.2

  • Removed clear checkbox from widgets on required fields.

1.0.1

1.0

  • Added support for Django 1.8.
  • Numerous documentation edits/improvements.

0.6.2

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 a VersatileImageField that specified ppoi_field, width_field and height_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 be editable=False by default to address a bug that consistently raised ValidationError 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

0.2.1

  • Ensuring admin widget-dependent thumbnail images are created even if VERSATILEIMAGEFIELD_SETTINGS['create_on_demand'] is set to False

0.2

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 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

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