Указание имени файла и места назначения в функции get_thumbnail миниатюры sorl

Я использую sorl thumbnail в первый раз. Я работаю с низкоуровневым API и использую метод get_thumbnail.

Согласно ссылке, я успешно использовал im = get_thumbnail(my_file, '100x100', crop='center', quality=99), но я бы например, указать исходное местоположение назначения и имя файла. Это возможно? Как я могу это сделать?


person Sandip Agarwal    schedule 15.02.2012    source источник
comment
Если вы говорите о присвоении миниатюре, созданной из исходного изображения, собственного имени файла и местоположения - вы не можете. Эта информация генерируется sorl, что делает ее такой быстрой с точки зрения производительности.   -  person Timmy O'Mahony    schedule 15.02.2012
comment
Да я именно об этом и спрашиваю. Есть ли способ, которым я могу это сделать?   -  person Sandip Agarwal    schedule 15.02.2012


Ответы (3)


Краткий ответ: вы не можете. Путь и имя файла генерируются 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/....

person Timmy O'Mahony    schedule 15.02.2012
comment
В соответствии с этим ответом вы можете определить свою собственную функцию для имен файлов. stackoverflow.com/a/24992909/1977847 - person Håken Lid; 20.05.2015

Я считаю, что вы можете расширить метод 'sorl.thumbnail.base.ThumbnailBackend', переопределив метод _get_thumbnail_filename, который обрабатывает имя файла назначения и подписать новый класс в THUMBNAIL_BACKEND в настройки.

person Johnny Wellington    schedule 09.06.2014

person    schedule
comment
Не будет, это не то, о чем я прошу. Мне нужно что-то для назначения, а не для источника. - person Sandip Agarwal; 15.02.2012
comment
Извините, я не совсем понимаю ваш вопрос из-за моего низкого уровня английского языка. pastylegs права, вы не можете изменить сгенерированный путь sorl, но вы можете попробовать написать собственную функцию для создания пути эскизов (но я думаю, что это не очень хорошее решение) - person willfill; 15.02.2012