2014-12-12 1 views
1

Я использую Django-FileBrowser и настройка моих версий as specified in the docs, которые указуют на указание версии изображения как так:Django-Filebrowser не может создать версию с автоматической шириной и ограниченной высотой?

VERSIONS = getattr(settings, "FILEBROWSER_VERSIONS", { 
    'thumbnail': {'verbose_name': 'Thumbnail (1 col)', 'width': 60, 'height': 60, 'opts': 'crop'}, 
    'small': {'verbose_name': 'Small (2 col)', 'width': 140, 'height': '', 'opts': ''}, 
}) 

... обратите внимание на «маленький» размер версии с неустановленными высотами, которые успешно генерирует версию изображения с ограниченной шириной и автоматической высотой. Это успешно работает для меня, однако обратное не (ограничена высота, но ширина авто):

'auto_width': {'verbose_name': 'Auto Width', 'width': '', 'height': 140, 'opts': ''}, 

Есть хитрость здесь, что я пропускаю, или же библиотека не имеет такой возможности?

ответ

0

Я просто побежал в ту же проблему и решить ее: https://github.com/sehmaschine/django-filebrowser/issues/278

Существует ошибка в scale_and_crop функции в utils.py при попытке сгенерировать версии с фиксированной высотой и автоматической шириной (другой способ вокруг него работает как прелесть). Образ версии будет создан, но с исходным размером.

Пример VERSION определение:

FILEBROWSER_VERSIONS = { 
    'medium': {'verbose_name': 'Medium (4col)', 'width': '', 'height': 250, 'opts': ''}, 
} 

Причина этого в том, что ширина переменный является пустой строкой, которая получает по сравнению с плавающей точкой, поэтому если оператор возвращает значение False, и изображение не будет изменено.

Один из способов исправить это было бы преобразовать ширину строки в поплавок для сравнения в utils.py:

66c65 
<  if 'upscale' not in opts and x < width: 
--- 
>  if 'upscale' not in opts and x < float(width or 0):