我是第一次使用sorl thumbnail
。我正在使用Low Level API并使用get_thumbnail
方法。
根据link,我成功使用了im = get_thumbnail(my_file, '100x100', crop='center', quality=99)
,但我想指定目标源位置和文件名。那可能吗?我怎么做?
简短的回答:你做不到。路径和文件名由sorl生成,并直接与缓存路径及其文件的缓存和存储方式相关。
如果你看一下sorl
中获取或创建缩略图的实际方法:
https://github.com/sorl/sorl-thumbnail/blob/master/sorl/thumbnail/base.py#L32
你会看到创建的缩略图的目标和文件名是source filename
,source location
,source dimensions
和source options
的哈希值。它创建此哈希,检查缓存以查看该哈希/键存在的值,如果是 - 返回与该缩略图对应的路径,否则 - 生成缩略图,保存并缓存路径。
因此,更改文件名的目标意味着您无法再从缓存中检索该缩略图。
您可以更改的唯一内容是您希望保存这些文件的根文件夹,即在/cache/...
或/thumbnails/...
下
我相信您可以扩展'sorl.thumbnail.base.ThumbnailBackend'覆盖处理目标文件名的_get_thumbnail_filename方法,并在设置中将新类签名为THUMBNAIL_BACKEND。
from django.core.files.base import File
my_file = File(open('/path/to/file', 'rb')) # or my_file = open('/path/to/file', 'rb')
im = get_thumbnail(my_file, '100x100', crop='center', quality=99)