Sorl 缩略图有一个低级 API,允许您执行以下操作,例如:
from sorl.thumbnail import get_thumbnail
im = get_thumbnail(my_file, '100x100', crop='center', quality=99)
这将返回对缓存文件的引用。 如果它已经被创建,它就超级快。 但是,如果必须首次创建它,则在使用 S3 等远程存储时可能需要很长时间。
有没有办法在 Python 中(即不在模板中)运行命令来检查 sorl 是否必须首次生成缩略图?
附言。我知道这里有类似的问题,但这是在模板上下文中询问它,并且有一个黑客解决方案作为使用自定义 SQL 而不是 sorl API 的答案。
在我的版本 sorl.thumbnail
中,11.12
,方法 get_thumbnail
在 sorl.thumbnail.base.py 中定义,开头如下:
def get_thumbnail(self, file_, geometry_string, **options):
"""..."""
source = ImageFile(file_)
for key, value in self.default_options.iteritems():
options.setdefault(key, value)
# ...
for key, attr in self.extra_options:
value = getattr(settings, attr)
if value != getattr(default_settings, attr):
options.setdefault(key, value)
name = self._get_thumbnail_filename(source, geometry_string, options)
thumbnail = ImageFile(name, default.storage)
cached = default.kvstore.get(thumbnail)
if cached:
return cached
if not thumbnail.exists():
...
如果您使用此代码并返回类似
cached or thumbnail.exists()
这应该会给你想要的结果。