我正在使用sorl-thumbnail为我的项目创建缩略图。我只在模板中实现它,而不是在模型或视图中实现它。每个缩略图都与原始图像相关联,这些图像由灯箱使用。作为一个新手,我想知道它的一些功能:
template
中实施它是否与在models
或view
中使用它并为每个创建新缩略图相同?easy_thumbnail
中完成?Quality
等的值最后,这是实施它的正确方法吗?任何建议或建议将不胜感激。谢谢。
HTML:
{% for photo in photos %}
<div class="thumbnail_container">
<a href="{{MEDIA_URL}}{{photo.image}}" class="gallery" title="{{photo.title}}">
{% thumbnail photo.image "200x200" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="thumbnail">
{% endthumbnail %}
</a>
</div>
{% endfor %}
修改
如何为sorl-thumbnails创建这样的东西,这可以通过简单的缩略图来完成:
settings.py
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (100,100), 'crop': True},
'forum': {'size': (203,103), 'crop':False},
},
}
然后在模板中,我可以从settings.py中定义的别名中选择:
<img src="/static/{{forum.image |thumbnail_url:'forum' }}">
或
<img src="/static/{{forum.image |thumbnail_url:'avatar' }}">
答案 0 :(得分:20)
像django sorl-thumbnail
中的许多内容一样简单而优雅地实现,并且您使用它的方式是正确的。
每次要求sorl-thumbnail
提供新的缩略图时,都会检查其缓存中是否存在:
因此,根据需要生成缩略图缓存。键值存储是一种存储缩略图的方法,可以快速查找和检索。使用上述步骤,将根据用户的要求生成和存储缩略图。
缩略图生成'按需'流程效果很好,随着图像逐渐添加到您的网站,新图像的缩略图将根据需要创建,缩略图用于从商店检索旧图像。
存储缩略图Sorl-thumbnail
使用数据库和内存缓存的组合。如果应用程序和/或Web服务器重新启动,数据库可确保保存所有缩略图。然后,缩略图将根据需要加载到内存缓存中(您猜对了),从而确保用户快速加载。
回答你的问题:
- 是否仅在模板中实现它是相同的,就像在模型或视图中使用它并为每个模板创建一个新的缩略图一样?
无法在模型或视图中生成缩略图,因为它们是在用户请求时按需生成的。这非常有效。我想你可以编写一个脚本来请求所有缩略图,这些缩略图每晚运行以确保生成所有缩略图,尽管这可能不是必需的。
- 如何为不同的图像配置不同的缩略图,因为它可以在easy_thumbnail中完成?
所有配置均在{% thumbnail %}
标记中完成,如果生成同一图像的不同缩略图,则这些缩略图将分别存储在键值存储中。
- 如何覆盖默认值,例如:覆盖质量等的值
此处有一个设置列表:http://sorl-thumbnail.readthedocs.org/en/latest/reference/settings.html,这些设置都应在settings.py
文件中设置。默认情况下,质量设置为95,这非常高。
编辑 - 在settings.py中设置jpeg质量
...
THUMBNAIL_QUALITY = 60
THUMBNAIL_PROGRESSIVE = False
...
这两个新增功能,在项目的settings.py
文件中的任何位置,都会将缩略图的jpeg质量降低到60,并关闭渐进式jpeg的创建。
修改 - 缩略图别名
sorl-thumbnail
中没有对缩略图别名的内置支持。实现它们的最简单方法可能是小子模板,然后可以将其加载到主模板中。
所以页面模板可能看起来像:
....
{% load thumbnail %}
....
<h3>Recent image uploads:</h3>
{% for item in recentUploads %}
{% include "bigThumbnail.html" %}
{% endfor %}
<h3>Older image uploads</h3>
{% for item in oldUploads %}
{% include "smallThumbnail.html" %}
{% endfor %}
....
缩略图的模板将作为单独的文件存储在模板目录中,可能如下所示:
<强> bigThumbnail.html 强>
{% thumbnail item.image "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
<强> smallThumbnail.html 强>
{% thumbnail item.image "40x40" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
在每个子模板中,可以进行“别名”的所有设置。或者,可以创建一个额外的模板标签来从settings.py
读取这些属性,这是easy_thumbnail
所做的,尽管需要大量的编程才能实现上述2个小模板的结果
如果您对sorl-thumbnail
有其他疑问,我们很乐意为您提供帮助。