diff --git a/.gitignore b/.gitignore index 2b525075..3ae4af8d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ build docs/_build .tox/ *.egg +*.pyc reports/* diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..ae5b849e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,21 @@ +language: python + +python: + - "2.6" + - "2.7" + +env: + - PYTHONPATH=$PYTHONPATH:$PWD DJANGO_VERSION=1.4.5 + - PYTHONPATH=$PYTHONPATH:$PWD DJANGO_VERSION=1.5.1 + +before_install: + - sudo apt-get build-dep python-imaging + - sudo ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/ + - sudo ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/ + - sudo ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/ + +install: + - pip install --use-mirrors PIL Django==$DJANGO_VERSION + +script: + - django-admin.py test easy_thumbnails --settings=easy_thumbnails.test_settings diff --git a/README.rst b/README.rst index bc5ad090..5826ea48 100644 --- a/README.rst +++ b/README.rst @@ -1,133 +1,136 @@ -=============== -Easy Thumbnails -=============== - -A powerful, yet easy to implement thumbnailing application for Django. - -Below is a quick summary of usage. For more comprehensive information, view the -`full documentation`__ online or the peruse the project's ``docs`` directory. - -__ http://easy-thumbnails.readthedocs.org/en/latest/index.html - - -Installation -============ - -Run ``pip install easy-thumbnails``, or for the `in-development version`__ -run ``pip install easy-thumbnails==dev``. - -__ https://github.com/SmileyChris/easy-thumbnails/tarball/master#egg=easy_thumbnails-dev - -Add ``easy_thumbnails`` to your ``INSTALLED_APPS`` setting:: - - INSTALLED_APPS = ( - ... - 'easy_thumbnails', - ) - -If you have South installed then run ``manage.py migrate easy_thumbnails``, -otherwise just run ``manage.py syncdb``. - - -Example usage -============= - -Thumbnail options can be predefined in ``settings.THUMBNAIL_ALIASES`` or just -specified in the template or Python code when run. - -Using a predefined alias ------------------------- - -Given the following setting:: - - THUMBNAIL_ALIASES = { - '': { - 'avatar': {'size': (50, 50), 'crop': True}, - }, - } - -Template:: - - {% load thumbnail %} - - -Python:: - - from easy_thumbnails.files import get_thumbnailer - thumb_url = get_thumbnailer(profile.photo)['avatar'].url - -Manually specifying size / options ----------------------------------- - -Template:: - - {% load thumbnail %} - - -Python:: - - from easy_thumbnails.files import get_thumbnailer - options = {'size': (100, 100), 'crop': True} - thumb_url = get_thumbnailer(profile.photo).get_thumbnail(options).url - - -Fields -====== - -You can use ``ThumbnailerImageField`` (or ``ThumbnailerFileField``) for easier -access to retrieve or generate thumbnail images. - -For example:: - - from easy_thumbnails.fields import ThumbnailerImageField - - class Profile(models.Model): - user = models.OneToOneField('auth.User') - photo = ThumbnailerImageField(upload_to='photos', blank=True) - -Accessing the field's predefined alias in a template:: - - {% load thumbnail %} - - -Accessing the field's predefined alias in Python code:: - - thumb_url = profile.photo['avatar'].url - - -Thumbnail options -================= - -``crop`` --------- - -Before scaling the image down to fit within the ``size`` bounds, it first cuts -the edges of the image to match the requested aspect ratio. - -Use ``crop="smart"`` to try to keep the most interesting part of the image, - -Use ``crop="0,10"`` to crop from the left edge and a 10% offset from the -top edge. Crop from a single edge by leaving dimension empty (e.g. -``crop=",0"``). Offset from the right / bottom by using negative numbers -(e.g., crop="-0,-10"). - -Often used with the ``upscale`` option, which will allow enlarging of the image -during scaling. - -``quality=XX`` --------------- - -Changes the quality of the output JPEG thumbnail. Defaults to ``85``. - -In Python code, this is given as a separate option to the ``get_thumbnail`` -method rather than just alter the other - -Other options -------------- - -Valid thumbnail options are determined by the "thumbnail processors" installed. - -See the `reference documentation`__ for a complete list of options provided by -the default thumbnail processors. - +Easy Thumbnails +=============== + +.. image:: https://secure.travis-ci.org/SmileyChris/easy-thumbnails.png?branch=master + :alt: Build Status + :target: http://travis-ci.org/SmileyChris/easy-thumbnails + +A powerful, yet easy to implement thumbnailing application for Django. + +Below is a quick summary of usage. For more comprehensive information, view the +`full documentation`__ online or the peruse the project's ``docs`` directory. + +__ http://easy-thumbnails.readthedocs.org/en/latest/index.html + + +Installation +============ + +Run ``pip install easy-thumbnails``, or for the `in-development version`__ +run ``pip install easy-thumbnails==dev``. + +__ https://github.com/SmileyChris/easy-thumbnails/tarball/master#egg=easy_thumbnails-dev + +Add ``easy_thumbnails`` to your ``INSTALLED_APPS`` setting:: + + INSTALLED_APPS = ( + ... + 'easy_thumbnails', + ) + +If you have South installed then run ``manage.py migrate easy_thumbnails``, +otherwise just run ``manage.py syncdb``. + + +Example usage +============= + +Thumbnail options can be predefined in ``settings.THUMBNAIL_ALIASES`` or just +specified in the template or Python code when run. + +Using a predefined alias +------------------------ + +Given the following setting:: + + THUMBNAIL_ALIASES = { + '': { + 'avatar': {'size': (50, 50), 'crop': True}, + }, + } + +Template:: + + {% load thumbnail %} + + +Python:: + + from easy_thumbnails.files import get_thumbnailer + thumb_url = get_thumbnailer(profile.photo)['avatar'].url + +Manually specifying size / options +---------------------------------- + +Template:: + + {% load thumbnail %} + + +Python:: + + from easy_thumbnails.files import get_thumbnailer + options = {'size': (100, 100), 'crop': True} + thumb_url = get_thumbnailer(profile.photo).get_thumbnail(options).url + + +Fields +====== + +You can use ``ThumbnailerImageField`` (or ``ThumbnailerFileField``) for easier +access to retrieve or generate thumbnail images. + +For example:: + + from easy_thumbnails.fields import ThumbnailerImageField + + class Profile(models.Model): + user = models.OneToOneField('auth.User') + photo = ThumbnailerImageField(upload_to='photos', blank=True) + +Accessing the field's predefined alias in a template:: + + {% load thumbnail %} + + +Accessing the field's predefined alias in Python code:: + + thumb_url = profile.photo['avatar'].url + + +Thumbnail options +================= + +``crop`` +-------- + +Before scaling the image down to fit within the ``size`` bounds, it first cuts +the edges of the image to match the requested aspect ratio. + +Use ``crop="smart"`` to try to keep the most interesting part of the image, + +Use ``crop="0,10"`` to crop from the left edge and a 10% offset from the +top edge. Crop from a single edge by leaving dimension empty (e.g. +``crop=",0"``). Offset from the right / bottom by using negative numbers +(e.g., crop="-0,-10"). + +Often used with the ``upscale`` option, which will allow enlarging of the image +during scaling. + +``quality=XX`` +-------------- + +Changes the quality of the output JPEG thumbnail. Defaults to ``85``. + +In Python code, this is given as a separate option to the ``get_thumbnail`` +method rather than just alter the other + +Other options +------------- + +Valid thumbnail options are determined by the "thumbnail processors" installed. + +See the `reference documentation`__ for a complete list of options provided by +the default thumbnail processors. + __ http://easy-thumbnails.readthedocs.org/en/latest/ref/processors/ diff --git a/easy_thumbnails/test_settings.py b/easy_thumbnails/test_settings.py index 198883bf..a5f3ab4c 100644 --- a/easy_thumbnails/test_settings.py +++ b/easy_thumbnails/test_settings.py @@ -25,3 +25,5 @@ # This is only needed for the 1.4.X test environment USE_TZ = True + +SECRET_KEY = 'test'