【问题标题】:Specifying file name and destination in get_thumbnail function of sorl thumbnail在 sorl thumbnail 的 get_thumbnail 函数中指定文件名和目的地
【发布时间】:2012-03-06 18:10:58
【问题描述】:

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

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

【问题讨论】:

  • 如果您正在谈论为从源图像创建的缩略图赋予其自己的文件名和位置 - 您不能。此信息由 sorl 生成,这使得它在性能方面如此快速
  • 是的,我就是在问这个问题。有什么办法可以做到这一点?

标签: django python-imaging-library sorl-thumbnail


【解决方案1】:

简短的回答:你不能。路径和文件名由 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 在设置中。

【讨论】:

【解决方案3】:
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)

【讨论】:

  • 没有willfill,这不是我要问的。我需要一些东西作为目的地而不是源头。
  • 很抱歉,由于我的英语水平较低,我无法完全理解您的问题。 pastelegs 权限,您不能更改 sorl 生成的路径,但您可以尝试编写自己的函数来生成缩略图路径。(但我认为这不是很好的解决方案)
猜你喜欢
  • 2013-06-20
  • 2013-09-10
  • 2013-08-26
  • 2011-05-13
  • 2011-11-05
  • 2011-09-05
  • 1970-01-01
  • 2012-11-22
  • 2015-01-01
相关资源
最近更新 更多