我正在尝试将一些旧网站升级到最新版本的 Django,并且 sorl-thumbnail 也需要更新。
我已将一些模板修复为新的 {% thumbnail ... %} {% endthumbnail %} 格式,但我无法同时使用内置和自定义过滤器(或处理器)。我有一个用于制作黑白缩略图和一个自定义编写的用于将饱和度设置为 50%。如何使用最新版本的 sorl-thumbnail 做到这一点?
我正在尝试将一些旧网站升级到最新版本的 Django,并且 sorl-thumbnail 也需要更新。
我已将一些模板修复为新的 {% thumbnail ... %} {% endthumbnail %} 格式,但我无法同时使用内置和自定义过滤器(或处理器)。我有一个用于制作黑白缩略图和一个自定义编写的用于将饱和度设置为 50%。如何使用最新版本的 sorl-thumbnail 做到这一点?
新的 sorl 代码库似乎没有功能。
但是,您可以通过创建(通过子类化)引擎、设置THUMBNAIL_ENGINE
和覆盖create()
方法来实现自定义处理。
例如,要添加处理选项以生成圆角:
from sorl.thumbnail.engines.pil_engine import Engine
class RoundedCornerEngine(Engine):
def create(self, image, geometry, options):
image = super(RoundedCornerEngine, self).create(image, geometry, options)
image = self.cornerize(image, geometry, options)
return image
def cornerize(self, image, geometry, options):
if 'cornerradius' in options:
...whatever...
return image
你会在模板中调用它(注意cornerradius
选项):
{% thumbnail my_image "300x150" format="PNG" cornerradius=10 as thumb %}
<img class="thumb" src="{{ thumb.url }}">
{% endthumbnail %}