fidals / refarm-site

Django applications with simple ecommerce functions
MIT License
2 stars 2 forks source link

Fix sorl failing on png loading #87

Closed duker33 closed 6 years ago

duker33 commented 6 years ago

Сейчас sorl-images падает при обработке png. Хочет только jpg. Возможно дело в либе, которую юзает sorl. Мы юзаем pillow, но здесь сказано, что можно выбрать другую. Потести обработку png на разных либах и запихни правильную либу в контейнер.

https://sorl-thumbnail.readthedocs.io/en/latest/requirements.html#image-library

Автор: Дюк

dveselov commented 6 years ago

Суть проблемы заключается в том, что PIL (или sorl-thumbnail) пытается сохранить превью для PNG-картинок (в формате RGBA, т.е. три цвета + альфа-канал) в формате JPEG (у которого вообще нет поддержки прозрачности) Исходя из этого, есть два варианта:

  1. Сохраняем все превью в PNG. Технически это очень просто сделать, достаточно добавить один параметр в шаблоны:
    - {% thumbnail page.main_image '296x440' as image %}
    + {% thumbnail page.main_image '296x440' format='PNG' as image %}
  2. Пишем в шаблонах некоторую логику, которая определяет формат загруженного изображения и выбирает тот или иной формат исходя из файлового расширения, псевдокод выглядит примерно так:
    {% if page.main_image.filename|endswith:'jpg' %}
    {% thumbnail page.main_image '296x440' format='JPEG' as image %}
    {% else %}
    {% thumbnail page.main_image '296x440' format='PNG' as image %}
    {% endswith %}
duker33 commented 6 years ago

@dveselov , го будем просто сохранять в png. Отличный варик

dveselov commented 6 years ago

Пофикшено в SE и STB. В шаблонах refarm-site не используется sorl-thumbnail.