创建缩略图

问题描述:

我知道过去有人问过关于缩略图的问题,但我似乎无法找到与我想要做的事完全吻合的答案。创建缩略图

我有一个模型有一个ImageField与相关的ModelForm。提交此表单时,我想为该图像创建几个不同的缩略图(给他们独特的名称,以便我可以稍后在我的模板中调用它们)并保存原始图像。我该如何去做呢?

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

+0

感谢您对sorl和easy_thumbnail的建议,但是有太多的魔法在我看来,我只是不明白。我很乐意自己做这一切。任何提示呢? –

+0

然后跳过easy_thumbnails并直接使用Pil和芹菜。如果芹菜太神奇了,您应该使用保存方式处理您的图像或使用post_save信号。 – arie

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

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

您可以使用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/