在sorl缩略图的get_thumbnail函数中指定文件名和目标

问题描述 投票:1回答:3

我是第一次使用sorl thumbnail。我正在使用Low Level API并使用get_thumbnail方法。

根据link,我成功使用了im = get_thumbnail(my_file, '100x100', crop='center', quality=99),但我想指定目标源位置和文件名。那可能吗?我怎么做?

django python-imaging-library sorl-thumbnail
3个回答
3
投票

简短的回答:你做不到。路径和文件名由sorl生成,并直接与缓存路径及其文件的缓存和存储方式相关。

如果你看一下sorl中获取或创建缩略图的实际方法:

https://github.com/sorl/sorl-thumbnail/blob/master/sorl/thumbnail/base.py#L32

你会看到创建的缩略图的目标和文件名是source filenamesource locationsource dimensionssource options的哈希值。它创建此哈希,检查缓存以查看该哈希/键存在的值,如果是 - 返回与该缩略图对应的路径,否则 - 生成缩略图,保存并缓存路径。

因此,更改文件名的目标意味着您无法再从缓存中检索该缩略图。

您可以更改的唯一内容是您希望保存这些文件的根文件夹,即在/cache/.../thumbnails/...


2
投票

我相信您可以扩展'sorl.thumbnail.base.ThumbnailBackend'覆盖处理目标文件名的_get_thumbnail_filename方法,并在设置中将新类签名为THUMBNAIL_BACKEND。


1
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.