2

django テンプレートで sorl-thumbnail を使用して次のサムネイルを作成できるかどうかはわかりません。

  • 固定幅、必要に応じて拡大。
  • 最大高さ。サイズ変更された画像が最大の高さよりも短い場合は、気にしません。
  • 画像を幅方向にトリミングしたくありませんが、高さ方向にトリミングしてもかまいません。

これを 2 つのステップで実行できるとしたら、次のようにします。

  • 画像のサイズを x 幅に変更し、アップスケーリングを可能にします。
  • x x y の長方形に収まるようにイメージをトリミングします。

私ができる最善の方法はこれです。これにより、幅は見栄えがよくなりますが、高さはトリミングされません。

{% thumbnail banner "1010" crop="center" as im %}<img id='banner' src='{{ im.url }}'/>{% endthumbnail %}

何か案は?

4

1 に答える 1

7

私の知る限り、sorl-thumbnail では、1 つのステップでそれを行うことはできません。最大高さのみが必要な場合は、「x100」ジオメトリ構文を使用できますが、固定幅は保証されません。

3 つの選択肢があります。

is_portrait フィルターを使用して、トリミングが必要かどうかを確認します。

{% if my_img|is_portrait %}
{% thumbnail my_img.filename "100x100" crop="top" as thumb %}
<img src="{{thumb}}" height="{{thumb.height}}" width="{{thumb.width}}"/>
{% endthumbnail %}
{% else %}
{% thumbnail my_img.filename "100" as thumb %}
<img src="{{thumb}}" height="{{thumb.height}}" width="{{thumb.width}}"/>
{% endthumbnail %}
{% endif %}

max_height でトリミングするカスタム sorl エンジンを作成します。

from sorl.thumbnail.engines.pil_engine import Engine
class MyCustomEngine(Engine):
    def create(self, image, geometry, options):
      image = super(MyCustomEngine, self).create(image, grometry, options)
      if 'max_height' in options:
          max_height = options['max_height']
          # Do your thing here, crop, measure, etc
      return image

{% thumbnail my_image.filename "100" max_height=100 as thumb %}

HTML 経由で画像のトリミングをシミュレートする

{% thumbnail my_img.filename "100" crop="top" as thumb %}
<figure><img src="{{thumb}}" height="{{thumb.height}}" width="{{thumb.width}}"/></figure>
{% endthumbnail %}

# Your CSS file
figure {
max-height: 100px;
overflow: hidden;
}
于 2011-11-28T01:29:58.087 に答える