使用新的sorl-thumbnail进行图像过滤

Tom*_*rle 1 sorl-thumbnail

我正在尝试将一些旧网站升级到最新版本的Django,并且需要更新sorl-thumbnail.

我已经修改了一些模板到新的{%thumbnail ...%} {%endthumbnail%}格式,但我在使用内置和自定义过滤器(或处理器)时遇到了麻烦.我有一个用于制作黑白缩略图和一个自定义用于将饱和度设置为50%的缩略图.我怎么能用最新版本的sorl-thumbnail做到这一点?

mjl*_*mjl 5

新的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
Run Code Online (Sandbox Code Playgroud)

你会在模板中将其称为(注意cornerradius选项):

{% thumbnail my_image "300x150" format="PNG" cornerradius=10 as thumb %}
    <img class="thumb" src="{{ thumb.url }}">
{% endthumbnail %}
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,只需在 `thumbnail` 标签中指定 `colorspace="GRAY"`,就可以开箱即用地“制作黑白缩略图”。 (2认同)