{ "info": { "author": "Alisue", "author_email": "lambdalisue@hashnote.net", "bugtrack_url": null, "classifiers": [], "description": "django-thumbnailfield\n===============================================================================\n.. image:: https://secure.travis-ci.org/lambdalisue/django-thumbnailfield.png\n :target: http://travis-ci.org/lambdalisue/django-thumbnailfield\n :alt: Build status\n\n.. image:: https://coveralls.io/repos/lambdalisue/django-thumbnailfield/badge.png\n :target: https://coveralls.io/r/lambdalisue/django-thumbnailfield/\n :alt: Coverage\n\n.. image:: https://pypip.in/d/django-thumbnailfield/badge.png\n :target: https://pypi.python.org/pypi/django-thumbnailfield/\n :alt: Downloads\n\n.. image:: https://pypip.in/v/django-thumbnailfield/badge.png\n :target: https://pypi.python.org/pypi/django-thumbnailfield/\n :alt: Latest version\n\n.. image:: https://pypip.in/wheel/django-thumbnailfield/badge.png\n :target: https://pypi.python.org/pypi/django-thumbnailfield/\n :alt: Wheel Status\n\n.. image:: https://pypip.in/egg/django-thumbnailfield/badge.png\n :target: https://pypi.python.org/pypi/django-thumbnailfield/\n :alt: Egg Status\n\n.. image:: https://pypip.in/license/django-thumbnailfield/badge.png\n :target: https://pypi.python.org/pypi/django-thumbnailfield/\n :alt: License\n\nAuthor\n Alisue \nSupported python versions\n 2.6, 2.7, 3.2, 3.3, 3.4\nSupported django versions\n 1.3 - 1.6 and 1.7c1\n\ndjango-thumbnailfield is a enhanced ImageField of Django.\nIt has the follwing features\n\n- Using Django storage system to store the image (Not like other Thumbnail library)\n- Automatically remove previous file from storage\n- Automatically generate thumbnails\n- Automatically remove generated previous thumbnail files from storage\n- Easy to use custom method to generate thumbnails\n\nInstall\n===========================================\n::\n\n sudo pip install django-thumbnailfield\n\n\nPrepare to use\n==========================================\n\n1. Append 'thumbnailfield' to ``INSTALLED_APPS``\n\n2. Set ``MEDIA_ROOT`` correctly.\n For example::\n\n MEDIA_ROOT = os.path.join(os.path.dirname(__file__), '../static')\n\n\nExample mini blog app\n=========================================\n\n``models.py``::\n \n from django.db import models\n from django.contrib.auth.models import User\n\n from thumbnailfield.fields import ThumbnailField\n \n class Entry(models.Model):\n PUB_STATES = (\n ('public', 'public entry'),\n ('protected', 'login required'),\n ('private', 'secret entry'),\n )\n pub_state = models.CharField('publish status', choices=PUB_STATES)\n title = models.CharField('title', max_length=140)\n body = models.TextField('body')\n\n #\n # This is a usage of ThumbnailField.\n # You have to set ``patterns`` to generate thumbnails\n #\n thumbnail = ThumbnailField(_('thumbnail'), upload_to='img/thumbnails', null=True, blank=True,\n pil_save_options={\n # Options of PIL Image.save() method.\n # e.g. quality control\n 'quality': 100,\n },\n patterns={\n # Pattern Format:\n # : (\n # (,), # with defautl process_method\n # (, ,), # with default process_method\n # (, , ),\n # (, , , ),\n # )\n #\n # If Name is ``None`` that mean original image will be processed\n # with the pattern\n #\n # Convert original image to sepia and resize it to 800x400 (original\n # size is 804x762)\n None: ((None, None, 'sepia'), (800, 400, 'resize')),\n # Create 640x480 resized thumbnail as large.\n 'large': ((640, 480, 'resize'),),\n # Create 320x240 cropped thumbnail as small. You can write short\n # pattern if the number of appling pattern is 1\n 'small': (320, 240, 'crop', {'left': 0, 'upper': 0}),\n # Create 160x120 thumbnail as tiny (use default process_method to\n # generate)\n 'tiny': (160, 120),\n #\n # These thumbnails are not generated while accessed. These can be\n # accessed with the follwoing code::\n #\n # entry.thumbnail.large\n # entry.thumbnail.small\n # entry.thumbnail.tiny\n #\n # # shortcut properties\n # entry.thumbnail.large_file # as entry.thumbnail.large.file\n # entry.thumbnail.large_path # as entry.thumbnail.large.path\n # entry.thumbnail.large_url # as entry.thumbnail.large.url\n # entry.thumbnail.large.size # as entry.thumbnail.large.size\n #\n })\n # ...\n\n``entry_detail.html``::\n\n \n \n django-thumbnailfield example\n \n \n
\n
Original
\n
\n
Thumbnail \"large\"
\n
\n
Thumbnail \"small\"
\n
\n
Thumbnail \"tiny\"
\n
\n
\n \n \n\nHow to use custom process method\n================================================================\n\nCreate your own custom process method like below::\n\n from django.core.exceptions import ImproperlyConfigured\n from thumbnailfield.process_methods import get_sepia_image\n from thumbnailfield.process_methods import get_cropped_image\n\n def get_sepia_and_cropped_image(img, width, height, **options):\n # do something with img\n img = get_sepia_image(img, None, None, **options)\n img = get_cropped_image(img, width, height, **options)\n return img\n def _sepia_and_cropped_error_check(f, img, width, height, **options):\n # do some error check\n if 'left' not in options:\n raise ImproperlyConfigured(f, \"'left' is required\")\n if 'upper' not in options:\n raise ImproperlyConfigured(f, \"'upper' is required\")\n # Apply error check function\n # Error check is recommended if your process method required any options\n # otherwise just forget about this.\n get_sepia_and_cropped_image.error_check = _sepia_and_cropped_error_check\n \nUse defined method in pattern like below::\n\n # models.py\n # ...\n thumbnail = ThumbnailField('thumbnail', upload_to='thumbnails', patterns = {\n 'large': (400, 500, get_sepia_and_cropped_image, {'left': 0, 'upper': 0})\n }\n # ...\n\nOr define the method in THUMBNAILFIELD_PROCESS_METHOD_TABLE and use as a string anme::\n\n # settings.py\n from thumbnailfield import DEFAULT_PROCESS_METHOD_TABLE\n THUMBNAILFIELD_PROCESS_METHOD_TABLE = DEFAULT_PROCESS_METHOD_TABLE\n THUMBNAILFIELD_PROCESS_METHOD_TABLE['sepia_and_crop'] = get_sepia_and_cropped_image\n\n # models.py\n # ...\n thumbnail = ThumbnailField('thumbnail', upload_to='thumbnails', patterns = {\n 'large': (400, 500, 'sepia_and_crop', {'left': 0, 'upper': 0})\n }\n # ...\n\nIf ``None`` is specified, that mean do nothing.\n\n # models.py\n # ...\n thumbnail = ThumbnailField('thumbnail', upload_to='thumbnails', patterns = {\n 'original': None,\n }\n # ...\n\nSettings\n=========================================\n``THUMBNAILFIELD_REMOVE_PREVIOUS``\n Remove previous files (include original file) when new file is applied to\n the ThumbnailField.\n\n Default: ``False``\n\n``THUMBNAILFIELD_DEFAULT_PROCESS_METHOD``\n Used when no process_method is applied in process pattern.\n\n Default: ``thumbnail``\n\n``THUMBNAILFIELD_DEFAULT_PROCESS_OPTIONS``\n Used when no process_options is applied in process pattern.\n\n Default: ``{'resample': Image.ANTIALIAS}``\n\n``THUMBNAILFIELD_FILENAME_PATTERN``\n Used to determine thumbnail filename. ``root``, ``filename``, ``name``\n and ``ext`` is passed to the string. The generated filename of the \n thumbnail named 'large' of '/some/where/test.png' will be \n ``/some/where/test.large.png`` in default.\n\n Default: ``r\"%(root)s/%(filename)s.%(name)s.%(ext)s\"``\n\n``THUMBNAILFIELD_PROCESS_METHOD_TABLE``\n Used to determine process method from string name. The key of this dictionary\n is a name of the method and value is a method.\n\n ``thumbnail``, ``resize``, ``crop``, ``grayscale`` and ``sepia`` are defined\n as default.\n\n Default: See ``thumbnailfield.__init__.DEFAULT_PROCESS_METHOD_TABLE``\n\n``THUMBNAILFIELD_DEFAULT_PIL_SAVE_OPTIONS``\n Options used in PIL image save method.\n\n Default: ``{}``", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/lambdalisue/django-thumbnailfield/tarball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lambdalisue/django-thumbnailfield", "keywords": "django app field image thumbnail", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "django-thumbnailfield", "package_url": "https://pypi.org/project/django-thumbnailfield/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-thumbnailfield/", "project_urls": { "Download": "https://github.com/lambdalisue/django-thumbnailfield/tarball/master", "Homepage": "https://github.com/lambdalisue/django-thumbnailfield" }, "release_url": "https://pypi.org/project/django-thumbnailfield/0.2.5/", "requires_dist": null, "requires_python": null, "summary": "Enhanced ImageField with automatically generate thumbnail of the specified image", "version": "0.2.5" }, "last_serial": 1386837, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "201fa8a660925c94d8cf194e94b48387", "sha256": "f35f1c5368ae847110ff654a43918d3f7e5b9830316a729f2373d9b3884fda2d" }, "downloads": -1, "filename": "django-thumbnailfield-0.1.0.tar.gz", "has_sig": false, "md5_digest": "201fa8a660925c94d8cf194e94b48387", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 516063, "upload_time": "2012-02-22T10:04:13", "url": "https://files.pythonhosted.org/packages/5a/fd/e3d825c480b8d19073a5fec69501c09353052f2af3dd9e8b8e90bae17051/django-thumbnailfield-0.1.0.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "62294dba55d0ff0cb0286b516a9facfe", "sha256": "296f5ea0b913069c3735e7e7f5c9026c6a78e8ac28425f8aedc84deadd5b2dc2" }, "downloads": -1, "filename": "django-thumbnailfield-0.1.2.tar.gz", "has_sig": false, "md5_digest": "62294dba55d0ff0cb0286b516a9facfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 516095, "upload_time": "2012-03-04T20:40:18", "url": "https://files.pythonhosted.org/packages/cc/29/368faa1b1562b86ba789a8482d141c7795d501fc208d622142214c9f022a/django-thumbnailfield-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "70a2c0737890466109af9536890240bd", "sha256": "da3a02006dd5fa9e0b843d82d8ca2883534c52fc5df290a8da72c150fb2282db" }, "downloads": -1, "filename": "django-thumbnailfield-0.1.3.tar.gz", "has_sig": false, "md5_digest": "70a2c0737890466109af9536890240bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 516214, "upload_time": "2012-03-12T13:22:28", "url": "https://files.pythonhosted.org/packages/d9/5c/3a904929f0503af54cfb19ddc71c41d728a2855f87655006d89ba34fef25/django-thumbnailfield-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "a1192ae504bf12cacb46acfb32a1e3c3", "sha256": "79f2ffd3b54009d39410690b88eab6146fc58b5aac96250e807ca01d499464cc" }, "downloads": -1, "filename": "django-thumbnailfield-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a1192ae504bf12cacb46acfb32a1e3c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 515118, "upload_time": "2012-03-13T04:16:55", "url": "https://files.pythonhosted.org/packages/7a/b7/a267c38777a2efd97e4d46c2878cb7eac1aea59d99504a1573854e7129de/django-thumbnailfield-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ffdf58f3284020ae78daa8da3c9a00f1", "sha256": "b4e7ad5f0d81b9e81fc3b9556ae1d4f132b96469de890324e9f4380a75e50eb5" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ffdf58f3284020ae78daa8da3c9a00f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 298346, "upload_time": "2014-04-16T07:41:43", "url": "https://files.pythonhosted.org/packages/7c/87/52355e6358f5cec3df6b440b7368d50916ed29f6b1330b9b4f43627f0b5f/django-thumbnailfield-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1a0d6a48fdfdf18bfe147eb35e3d6e03", "sha256": "8acebc5aed3808cfc5571951fde9ed220a2a13779e0949c8d02c4c7f9c7d4551" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.1.tar.gz", "has_sig": false, "md5_digest": "1a0d6a48fdfdf18bfe147eb35e3d6e03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11908, "upload_time": "2014-07-12T11:29:59", "url": "https://files.pythonhosted.org/packages/8f/43/5ffaf2bed614d68fbb37b65af5ced6a88a993158a9cb32cb9a7f8f7d7fe6/django-thumbnailfield-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4068784b7ccacc3526eabffdae3bf96f", "sha256": "d3b388349aa3f0b3ab32dbb2fb94c5e0646c457d01c57c1fe58d3c422b28d967" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4068784b7ccacc3526eabffdae3bf96f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11930, "upload_time": "2014-07-21T02:16:04", "url": "https://files.pythonhosted.org/packages/fb/38/e4bc27ad9daf3884dcafc81f486e3cc3e8ec3f01ea06a26ad1efd3cfefa1/django-thumbnailfield-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "47127de8a75467d031bd25a42343ee6e", "sha256": "c53aa12ce0c64dda95de879fa44259d848f492ca89acf46f7aa0e902c7c6ac83" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.3.tar.gz", "has_sig": false, "md5_digest": "47127de8a75467d031bd25a42343ee6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12037, "upload_time": "2014-11-23T13:54:38", "url": "https://files.pythonhosted.org/packages/c9/53/64810aa7984b677b4b6202b8b00b258cc7a7dfba65b9b959f677735fdb87/django-thumbnailfield-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "b6234deab2a35e0d7a8aedff128b7220", "sha256": "7496193874520c94697e323a0518099d529a12410cf75b9f373d9777a17561df" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.4.tar.gz", "has_sig": false, "md5_digest": "b6234deab2a35e0d7a8aedff128b7220", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12031, "upload_time": "2014-11-23T21:16:00", "url": "https://files.pythonhosted.org/packages/01/75/1a7db2b3b96be9e7ddb83bc7389e6aa507265b5e41b093d88e07b0d86ea9/django-thumbnailfield-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "6cc7e43da0050d73995148221a61e989", "sha256": "0a4a6960fc0086cf51a9c7c2b38352385c5b94d3deda740597155646517b77c7" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.5.tar.gz", "has_sig": false, "md5_digest": "6cc7e43da0050d73995148221a61e989", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12291, "upload_time": "2015-01-18T14:57:19", "url": "https://files.pythonhosted.org/packages/2c/47/dc3b93d0c30bb946ebb143b272d49cc4cf8d4742e158b0c8a2b75c065715/django-thumbnailfield-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6cc7e43da0050d73995148221a61e989", "sha256": "0a4a6960fc0086cf51a9c7c2b38352385c5b94d3deda740597155646517b77c7" }, "downloads": -1, "filename": "django-thumbnailfield-0.2.5.tar.gz", "has_sig": false, "md5_digest": "6cc7e43da0050d73995148221a61e989", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12291, "upload_time": "2015-01-18T14:57:19", "url": "https://files.pythonhosted.org/packages/2c/47/dc3b93d0c30bb946ebb143b272d49cc4cf8d4742e158b0c8a2b75c065715/django-thumbnailfield-0.2.5.tar.gz" } ] }