sorl- изменение размера миниатюр и добавление фона

#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. Я действительно не знаю, что делать. Лучший Жак