创建缩略图

时间:2011-11-21 06:25:58

标签: django python-imaging-library

我知道过去曾经问过关于缩略图的问题,但我似乎无法找到一个完全符合我要做的答案。

我有一个Model,它有一个ImageField和一个相关的ModelForm。提交此表单时,我想为此图像创建几个不同的缩略图(给出我想到的唯一名称,以便稍后在我的模板中调用它们)并保存原始图像。我该怎么做呢?

我正在使用PIL并将进行一些自定义图像处理,因此使用简单创建缩略图的库将不太合适。

2 个答案:

答案 0 :(得分:2)

您可以使用sorl.thumbnail在模板中生成缩略图,如下所示:

{% thumbnail item.image "100x100" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

比以多种不同的方式生成on save更好:

  • 您可以移动到新服务器而无需移动缩略图(sorl.thumbnail将重新生成它们)
  • 您可以轻松更改缩略图大小(只需更改模板中的参数,它就会神奇地发生)
  • 缩略图大小保存在应有的位置(在模板中)
  • 您可以在不同的模板中使用不同的尺寸(即移动模板)

http://thumbnail.sorl.net/

答案 1 :(得分:2)

您可以使用easy-thumbnail's low level API创建缩略图:  easy-thumbnails内置了一些图像处理器,但您也可以添加custom procressors并包装所需的PIL操作。

要处理背景中的多个图像,您应该考虑使用像celery这样的任务队列。