django-image-cropping Documentation

Similar documents
django-embed-video Documentation

django-embed-video Documentation

Easy-select2 Documentation

django-intercom Documentation

django-embed-video Documentation

Django Image Tools Documentation

django-baton Documentation

django-osm-field Release 0.3.1

Django Leaflet Documentation

django simple pagination Documentation

django-autocomplete-light Documentation

django-baton Documentation

Flexslider v1.x Installation and User Manual

Index. alt, 38, 57 class, 86, 88, 101, 107 href, 24, 51, 57 id, 86 88, 98 overview, 37. src, 37, 57. backend, WordPress, 146, 148

Django Extra Views Documentation

Django File Picker Documentation

BindTuning Installations Instructions, Setup Guide. Invent Setup Guide

django-sticky-uploads Documentation

django-autocomplete-light Documentation

Getting Started with CSS Sculptor 3

django-avatar Documentation

django-avatar Documentation

How to use WordPress to create a website STEP-BY-STEP INSTRUCTIONS

easy-thumbnails Documentation

django_podcasting Documentation

RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016

A Quick Introduction to the Genesis Framework for WordPress. How to Install the Genesis Framework (and a Child Theme)

Django File Picker Documentation

Dynamic Product Options extension for Magento2. User Guide

django-precise-bbcode Documentation

Django Map Widgets Documentation

For DonorCentral 4.0, all client production sites will be upgraded on the weekend of July 18, 2015.

Advanced Dreamweaver CS6

As part of our commitment to continuously updating and enhancing our fundraising system, we are thrilled to announce our latest enhancements.

django-gollum Documentation

A Guide to Using WordPress + RAVEN5. v 1.4 Updated May 25, 2018

Installation & User Guide

4.1 Creating content elements

How to Build a Site Style. WebGUI LIVE!

Adobe Dreamweaver CS6 Digital Classroom

sorl-thumbnail Documentation

Content Elements. Contents. Row

Beginner Workshop Activity Guide 2012 User Conference

Django QR Code Documentation

Creating Web Pages with SeaMonkey Composer

sorl-thumbnail Documentation

Documentation. Visit the Documentation Online at:

MARKET RESPONSIVE PRESTASHOP THEME USER GUIDE

django-fluent-dashboard Documentation

django-auditlog Documentation

Private Sales & Flash Sales v4.x Configuration for Magento 2

Webinse Image Gallery

micawber Documentation

A set-up guide and general information to help you get the most out of your new theme.

DRESSSHOP RESPONSIVE PRESTASHOP THEME USER GUIDE

Manual Html Image Src Url Path Not Working

django-responsive2 Documentation

django-scaffold Documentation

AGENT123. Full Q&A and Tutorials Table of Contents. Website IDX Agent Gallery Step-by-Step Tutorials

WordPress How to Create a Simple Image Slider with the New RoyalSlider

21. Creating or Editing an Image-based Department Homepage

How to Edit Your Website

django-flickr Documentation

welcome to BOILERCAMP HOW TO WEB DEV

Conductor Plugin. Pre-release User Guide slocumthemes.com

2013, Active Commerce 1

Flexslider v2.x Installation and User Manual

django-conduit Documentation

Django Admin Sortable Documentation

Blog Pro for Magento 2 User Guide

django-dajax Documentation

alphafilter Documentation

From the dashboard, hover over the + New button, then select Pattern from the drop-down menu.

Lava New Media s CMS. Documentation Page 1

JSN EasySlider Configuration Manual

FME Extensions. Media Gallery & Product Videos Extension for Magento 2. User Guide - Version

Multiple Custom Forms

django-push Documentation

Ace Corporate Documentation

Starting Your SD41 Wordpress Blog blogs.sd41.bc.ca

VirtueMart Product Scroller Module

UW Oshkosh WordPress Training Manual. June 2015 Integrated Marketing Communications *Updated January 2016

wagtailmenus Documentation

Styles, Style Sheets, the Box Model and Liquid Layout

djangocms-cascade Documentation

CHAPTER 2 MARKUP LANGUAGES: XHTML 1.0

Django-frontend-notification Documentation

Autodesk Moldflow Adviser AMA Reports

Responsive Banner Slider Extension

Design Importer User Guide

Clients Continued... & Letters. Campaigns Continued To create a Custom Campaign you must first name the campaign and select

staff Documentation Release 1.2

Classroom Blogging. Training wiki:

Iceberg Commerce Video Gallery Extension 2.1 For Magento Version 1.3, 1.4, 1.5, 1,6, 1.7

wagtailtrans Documentation

Wolf. Responsive Website Designer. Mac Edition User Guide

Django EL(Endless) Pagination Documentation

1 Woocommerce Products Designer

Blue Form Builder extension for Magento 2

JSN ImageShow Configuration Manual Introduction

Transcription:

django-image-cropping Documentation Release 1.1.0 Jonas und der Wolf Nov 06, 2017

Contents 1 Installation 3 2 Configuration 5 3 Admin Integration 7 4 Backends 9 5 Frontend 11 5.1 easy_thumbnails............................................. 11 6 ModelForm 13 7 Multiple formats 15 8 Foreign Keys 17 9 Free cropping 19 10 Disabling cropping 21 11 Settings 23 11.1 Thumbnail size.............................................. 23 11.2 Size warning............................................... 23 11.3 Custom jquery.............................................. 23 11.4 Custom backend............................................. 24 12 Troubleshooting 25 13 Changelog 27 13.1 1.1.................................................... 27 13.2 1.0.4................................................... 27 13.3 1.0.................................................... 27 13.4 0.9.................................................... 27 13.5 0.8.................................................... 28 13.6 0.7.................................................... 28 i

ii

django-image-cropping Documentation, Release 1.1.0 django-image-cropping is an app for cropping uploaded images via Django s admin backend using Jcrop. Screenshot: django-image-cropping is perfect when you need images with a specific size for your templates but want your users or editors to upload images of any dimension. It presents a selection with a fixed aspect ratio so your users can t break the layout with oddly-sized images. The original images are kept intact and only get cropped when they are displayed. Large images are presented in a small format, so even very big images can easily be cropped. The necessary fields, widgets and a template tag for displaying the cropped image in your templates are provided. Also works with FeinCMS content types! Contents 1

django-image-cropping Documentation, Release 1.1.0 2 Contents

CHAPTER 1 Installation 1. Install django-image-cropping using pip: pip install django-image-cropping By default django-image-cropping ships with an easy-thumbnails-backend which requires easy-thumbnails to also be installed and added to the INSTALLED_APPS. The easy-thumbnails backend requires that you adjust the thumbnail processors in your settings: INSTALLED_APPS = [... 'easy_thumbnails', 'image_cropping', ] from easy_thumbnails.conf import Settings as thumbnail_settings THUMBNAIL_PROCESSORS = ( 'image_cropping.thumbnail_processors.crop_corners', ) + thumbnail_settings.thumbnail_processors 3

django-image-cropping Documentation, Release 1.1.0 4 Chapter 1. Installation

CHAPTER 2 Configuration Add an ImageRatioField to the model that contains the ImageField for the images you want to crop. The ImageRatioField simply stores the boundaries of the cropped image. It expects the name of the associated ImageField and the desired size of the cropped image as arguments. The size is passed in as a string and defines the aspect ratio of the selection as well as the minimum size for the final image: from django.db import models from image_cropping import ImageRatioField class MyModel(models.Model): image = models.imagefield(blank=true, upload_to='uploaded_images') # size is "width x height" cropping = ImageRatioField('image', '430x360') You can configure a size warning if users try to crop a selection smaller than the defined minimum. 5

django-image-cropping Documentation, Release 1.1.0 6 Chapter 2. Configuration

CHAPTER 3 Admin Integration Add the ImageCroppingMixin to your ModelAdmin: from django.contrib import admin from image_cropping import ImageCroppingMixin class MyModelAdmin(ImageCroppingMixin, admin.modeladmin): pass admin.site.register(mymodel, MyModelAdmin) If your setup is correct you should now see the enhanced image widget that provides a selection area. 7

django-image-cropping Documentation, Release 1.1.0 8 Chapter 3. Admin Integration

CHAPTER 4 Backends django-image-cropping delegates the cropped image generation to a backend. A backend based on easy-thumbnails is provided, but it s possible to use a custom backend. The IMAGE_CROPPING_BACKEND setting expects a dotted path to a class that implements the required methods. You can omit this setting if you want to use the default backend. In case you use a custom backend you can provide an optional dict that will be used to populate the backend s constructor params. Default settings: IMAGE_CROPPING_BACKEND = 'image_cropping.backends.easy_thumbs.easythumbnailsbackend' IMAGE_CROPPING_BACKEND_PARAMS = {} 9

django-image-cropping Documentation, Release 1.1.0 10 Chapter 4. Backends

CHAPTER 5 Frontend django-image-cropping provides a templatetag for displaying a cropped thumbnail. Any other processor parameter (like bw=true or upscale=true) will be forwarded to the backend: {% cropped_thumbnail yourmodelinstance "ratiofieldname" [scale=int width=int height=int max_size="intxint"] %} Example usage: {% load cropping %} <img src="{% cropped_thumbnail yourmodel "cropping" scale=0.5 %}"> Or generate the URL from Python code in your view: from image_cropping.utils import get_backend thumbnail_url = get_backend().get_thumbnail_url( yourmodel.image, { 'size': (430, 360), 'box': yourmodel.cropping, 'crop': True, 'detail': True, } ) 5.1 easy_thumbnails You can also use the standard easy-thumbnails templatetag with the box parameter: {% load thumbnail %} {% thumbnail yourmodel.image 430x360 box=yourmodel.cropping crop detail %} Or generate the URL from Python code in your view: 11

django-image-cropping Documentation, Release 1.1.0 from easy_thumbnails.files import get_thumbnailer thumbnail_url = get_thumbnailer(yourmodel.image).get_thumbnail({ 'size': (430, 360), 'box': yourmodel.cropping, 'crop': True, 'detail': True, }).url 12 Chapter 5. Frontend

CHAPTER 6 ModelForm If you want to use the cropping widget outside the admin, you ll need to define the ImageField as an ImageCropField: from django.db import models from image_cropping import ImageCropField, ImageRatioField class MyModel(models.Model): image = ImageCropField(blank=True, upload_to='uploaded_images') # size is "width x height" cropping = ImageRatioField('image', '430x360') Alternatively, override the widget in your ModelForm (you just need to do one of these two, not both!): from django import forms from image_cropping import ImageCropWidget class MyModelForm(forms.ModelForm): class Meta: widgets = { 'image': ImageCropWidget, } Remember to include the form media in the <head> of your HTML: <html> <head> {{ form.media }} </head> <body> {{ form }} </body> </html> The cropping itself happens in the ImageRatioField, the ImageCropField will still behave like a regular ImageField. 13

django-image-cropping Documentation, Release 1.1.0 If you re selectively including or excluding fields from the ModelForm, remember to include the ImageRatioField. 14 Chapter 6. ModelForm

CHAPTER 7 Multiple formats If you need the same image in multiple formats, simply specify another ImageRatioField. This will allow the image to be cropped twice: from image_cropping import ImageRatioField, ImageCropField image = ImageCropField(blank=True, upload_to='uploaded_images') # size is "width x height" list_page_cropping = ImageRatioField('image', '200x100') detail_page_cropping = ImageRatioField('image', '430x360') In your templates, use the corresponding ratio field: {% load cropping %} {% cropped_thumbnail yourmodel "list_page_cropping" %} 15

django-image-cropping Documentation, Release 1.1.0 16 Chapter 7. Multiple formats

CHAPTER 8 Foreign Keys If you need to crop an image contained within another model, referenced by a ForeignKey, the ImageRatioField is composed of the ForeignKey name, a double underscore, and the ImageField name: from django.db import models from image_cropping.fields import ImageRatioField class Image(models.Model): image_field = models.imagefield(upload_to='image/') class NewsItem(models.Model): title = models.charfield(max_length=255) image = models.foreignkey(image) cropping = ImageRatioField('image image_field', '120x100') Cropping foreign keys only works in the admin for now, as it reuses the raw_id widget. 17

django-image-cropping Documentation, Release 1.1.0 18 Chapter 8. Foreign Keys

CHAPTER 9 Free cropping If you do not need a fixed ratio, you can disable this constraint by setting free_crop to True. In this case the size parameter is the desired minimum and is also used for the size-warning: from image_cropping import ImageRatioField, ImageCropField image = ImageCropField(blank=True, upload_to='uploaded_images') # size is "width x height" so a minimum size of 200px x 100px would look like this: min_free_cropping = ImageRatioField('image', '200x100', free_crop=true) Use the max_size parameter of the templatetag if you want to limit the display size of a thumbnail: <img src="{% cropped_thumbnail image "cropping_free" max_size="200x200" %}" /> 19

django-image-cropping Documentation, Release 1.1.0 20 Chapter 9. Free cropping

CHAPTER 10 Disabling cropping If you want cropping to be optional, use allow_fullsize=true as an additional keyword argument for your ImageRatioField. Editors can now switch off cropping by unchecking a checkbox next to the image cropping widget: image_with_optional_cropping = ImageRatioField('image', '200x100', allow_ fullsize=true) 21

django-image-cropping Documentation, Release 1.1.0 22 Chapter 10. Disabling cropping

CHAPTER 11 Settings 11.1 Thumbnail size You can define the maximum size of the admin preview thumbnail in your settings: # size is "width x height" IMAGE_CROPPING_THUMB_SIZE = (300, 300) 11.2 Size warning You can warn users about crop selections that are smaller than the size defined in the ImageRatioField. When users try to do a smaller selection, a red border appears around the image. To use this functionality for a single image add the size_warning parameter to the ImageRatioField: cropping = ImageRatioField('image', '430x360', size_warning=true) You can enable this functionality project-wide by adding the following line to your settings: IMAGE_CROPPING_SIZE_WARNING = True 11.3 Custom jquery By default the image cropping widget embeds a recent version of jquery. You can point to another version using the IMAGE_CROPPING_JQUERY_URL setting, though compatibility issues may arise if your jquery version differs from the one that is tested against. You can also set IMAGE_CROPPING_JQUERY_URL to None to disable inclusion of jquery by the widget. You are now responsible for including jquery yourself, both in the frontend and in the admin interface. 23

django-image-cropping Documentation, Release 1.1.0 11.4 Custom backend You can define a custom backend: IMAGE_CROPPING_BACKEND = 'image_cropping.backends.easy_thumbs.easythumbnailsbackend' You can provide an optional dict that will be used to populate the backend s constructor: IMAGE_CROPPING_BACKEND_PARAMS = {'version_suffix': 'thumb'} See the built-in backends on Backends. 24 Chapter 11. Settings

CHAPTER 12 Troubleshooting The cropping widget is not displayed when using a ForeignKey. Make sure you do not add the corresponding image field to raw_id_fields. 25

django-image-cropping Documentation, Release 1.1.0 26 Chapter 12. Troubleshooting

CHAPTER 13 Changelog 13.1 1.1 Make django-image-cropping compatible with Django 1.11 13.2 1.0.4 Move and encapsulate the logic for creating cropped thumbnails to a swappable backend. (@fgmacedo in #92) 13.3 1.0 If your software is being used in production, it should probably already be 1.0.0. (http://semver.org) 13.4 0.9 This release addresses mainly the test coverage and internal stuff. Noteable (breaking) changes and things to be considered when upgrading from an older version: django-appconf is now used for handling defaults and settings. Breaking Change: JQUERY_URL changed to IMAGE_CROPPING_JQUERY_URL as part of this transition. The cropped_thumbnail tag is now based on Django s simple tag. Breaking Change: Arguments for the the tag now need to be put in quotes. If you are still using Django 1.4 remember that you can t easily use True or False as template tag arguments. 27

django-image-cropping Documentation, Release 1.1.0 Any processor parameter (like bw=true or upscale=true) can be used in the cropped_thumbnail tag. Moved inline css to a dedicated image_cropping.css style sheet 13.5 0.8 Minimum requirements changed to Django 1.4 and easy-thumbnails 1.4 Added Python 3 compatibility. Python 2.6 is now the minimum required Python version. Added a free cropping option, so cropping is no longer restricted to fixed ratios. Removed the deprecated CropForeignKey field. 13.6 0.7 Made the widget for the ImageCropField overwriteable to allow custom widgets. (Remember to use the ImageCroppingMixin in the admin as the image cropping widgets are no longer implicitly set.) Updated Jcrop and jquery dependencies. Moved docs to Read the Docs: https://django-image-cropping.readthedocs.org 28 Chapter 13. Changelog