我有一个项目,我需要开始创建用户上传图像的动态调整大小的缩略图,之前我已经生成了一些特定大小的缩略图.我有一个现有的模型,它代表一个如下图像:
class Image(models.Model):
original = models.URLField()
small = models.URLField()
medium = models.URLField()
large = models.URLField()
Run Code Online (Sandbox Code Playgroud)
其中每个都填入了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 %}
Run Code Online (Sandbox Code Playgroud)
最终生成文件的URL cache/84/8f/848fb078f2e8d35aecd92150c6fa6843.png(如404s).我不确定我理解这个文件应该存储在哪里.我假设它正在拉入S3文件,然后在某处创建缩略图,但我不清楚它在哪里,以及我应该从哪里提供它.现在全部都在本地devserver上,使用memcached(我可以看到设置了缓存条目).PIL安装在我的环境中,支持jpeg/png.