1

古いウェブサイトを最新バージョンのDjangoにアップグレードしようとしていますが、sorl-thumbnailも更新する必要があります。

一部のテンプレートを新しい{%thumbnail ...%} {%endthumbnail%}形式に修正しましたが、組み込みフィルターとカスタムフィルター(またはプロセッサー)の両方を使用できません。サムネイルを白黒にするためのものと、彩度を50%に設定するための特注のものがありました。最新バージョンのsorl-thumbnailでこれを行うにはどうすればよいですか?

4

1 に答える 1

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

そして、テンプレートでそれを次のように呼び出します(オプションに注意してくださいcornerradius):

{% thumbnail my_image "300x150" format="PNG" cornerradius=10 as thumb %}
    <img class="thumb" src="{{ thumb.url }}">
{% endthumbnail %}
于 2011-06-28T11:47:21.617 に答える