#django #sorl-thumbnail
#django #sorl-миниатюра
Вопрос:
Я использую sorl-thumbnail и хочу изменить размер изображения до 200×200. Допустим, тогда изображение будет 160×200, потому что оно не квадратное. Как я могу добавить белый фон (или границы), чтобы результирующий файл изображения был размером 200×200? Возможно ли это с помощью sorl-thumbnail или я могу добавить эту функциональность?
Лучший Жак
Ответ №1:
Я думаю, это немного поздно, но вы можете найти свой ответ в свойстве margin:
Короче говоря:
{% thumbnail something.image "200x200" as image %}
<img src="{{ image.url }}" style="padding:{{ image|margin:"200x200" }}" />
{% endthumbnail %}
… и не забудьте установить
img { background-color: #fff; }
Подробности из документации: http://thumbnail.sorl.net/template.html#margin
Ответ №2:
Я смущен тем, что вы имеете в виду, говоря об изменении размера изображения до 200×200, а затем до 160×200. Вы просто хотите, чтобы изображение было обрезано пропорционально, исходя из его самой длинной стороны? Если это так, вы можете сделать это:
{% thumbnail something.image "200x200" as image %}
<img src="{{ image.url }}" alt="{{ something.name }}" />
{% endthumbnail %}
что должно дать вам поведение, которое вы искали с точки зрения обрезки.
Вы хотите на самом деле наложить рамку на изображение или будет уместно создать рамку с помощью CSS?
img {
background-color: #fff;
padding: 2px;
}
Если вместо этого вы действительно хотите изменить само изображение, я уверен, что вы можете изменить исходный код (который вы можете разветвить на GitHub здесь), чтобы сделать то, что вам нужно.
Я также могу порекомендовать django-photologue в качестве альтернативы, если вы хотите создавать водяные знаки и т.д… Я обнаружил, что это действительно здорово, когда дело доходит до внесения изменений в изображения по всему сайту, по сравнению с sorl.
Комментарии:
1. я имел в виду следующее: я использую пропорциональную обрезку до 200×200 (аналогично вашему первому примеру). Но когда у меня получается изображение, которое не является квадратным, этот код создаст новый файл изображения с геометрией, например, 160×200. Есть ли способ добавить фон размером 200×200 к этому изображению?
2. Я хочу, чтобы все файлы изображений были одинакового размера (200×200), но без изменения соотношения сторон исходных изображений и без какой-либо обрезки. Вы также можете подумать о добавлении границ к измененным изображениям (размером 160×200, 195×200, 200×130, 200×50, …), чтобы сделать все эти файлы одинакового размера 200×200.
3. Теперь я нашел это: link Похоже, что эта pad-функция делает только то, что мне нужно, но поскольку я совсем новичок в Django, я понятия не имею, как добавить это в свой код и как использовать в шаблоне. Также похоже, что код зависит от более старых версий sorl-thumbnail. Я действительно не знаю, что делать. Лучший Жак