我有一个项目,我需要开始创建用户上传图像的动态调整大小的缩略图,以前我一直在生成一些特定大小的缩略图。我有一个现有的模型,它代表一个看起来像这样的图像:
class Image(models.Model):
original = models.URLField()
small = models.URLField()
medium = models.URLField()
large = models.URLField()
其中每一个都填写了指向 S3 上相应图像的 URL。在上传时,所有版本都被创建(实际上是在不久之后,通过计划任务),存储在 S3 中,然后在模型上设置。展望未来,我们的设计需要为每个缩略图提供许多不同的大小,因此将它们全部存储在数据库中是不切实际的。我想original
在模板中保留并即时完成其余的工作。
所以这就是我来到sorl-thumbnail的地方。它似乎打算做我想做的事,但我有点迷失它应该如何工作(目前还没有)。作为一项测试,我制作了一个基本视图/模板,其中列出了一些图像并尝试对其进行缩略图,就像教程一样:
{% for img in image_set %}
{% thumbnail img.original "180x180" crop="center" format="PNG" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
{% endfor %}
最终会为文件生成一个 URL,例如cache/84/8f/848fb078f2e8d35aecd92150c6fa6843.png
(404s)。我不确定我是否了解该文件应该存储在哪里。我假设它正在拉入 S3 文件,然后在某处创建缩略图,但我不清楚那在哪里,以及我应该从哪里提供它。这一切现在都在本地开发服务器上,使用 memcached(我可以看到正在设置缓存条目)。PIL 安装在我的环境中,支持 jpeg/png。