gpt4 book ai didi

django-templates - 如何使用sorl-thumbnail设置固定宽度,最大高度(在Django中)

转载 作者:行者123 更新时间:2023-12-03 23:39:09 25 4
gpt4 key购买 nike

我无法解决是否可以在Django模板中使用sorl-thumbnail创建以下缩略图:


固定宽度,必要时可按比例放大。
最大高度。如果调整大小的图像比最大高度短,我不介意。
我不想沿宽度方向裁剪图像,但不介意沿高度方向裁剪图像。


如果能够分两个步骤执行此操作,则可以:


将图像调整为x宽度,以允许放大。
裁剪图像以适合x乘以y的矩形。


我能做的最好的是,这样可以使宽度看起来不错,但不会裁剪高度。

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


有任何想法吗?

最佳答案

据我所知,唯一的缩略图不允许您一步完成。如果仅需要最大高度,则可以使用“ x100”几何语法,但不能确保固定宽度。

我可以看到三种选择:

使用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 %}


制作一个自定义sorl引擎以max_height裁剪:

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;
}

关于django-templates - 如何使用sorl-thumbnail设置固定宽度,最大高度(在Django中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com