ResizeToFit в django-imagekit - Python

Узнай цену своей работы

Формулировка задачи:

django-imagekit==4.0

Вот модель:
Листинг программы
  1. class Image(CommonUrlMethodsMixin, GeneralModel):
  2. pic = models.ImageField(verbose_name=_("Image"), upload_to=get_upload_path)
  3. pic_xs = ImageSpecField(source='pic',
  4. processors=[ResizeToFit(width=500)],
  5. format='JPEG',
  6. options={'quality': 60},
  7. autoconvert=True)
  8. pic_sm = ImageSpecField(source='pic',
  9. processors=[ResizeToFit(width=750)],
  10. format='JPEG',
  11. options={'quality': 60})
  12. pic_md = ImageSpecField(source='pic',
  13. processors=[ResizeToFit(width=970)],
  14. format='JPEG',
  15. options={'quality': 60})
  16. pic_lg = ImageSpecField(source='pic',
  17. processors=[ResizeToFit(width=1170)],
  18. format='JPEG',
  19. options={'quality': 60})
Проблема в том, что картинку загружает пользователь. Но пользователь ведь может загрузить картинку и маленькую. Скажем, 700 px по ширине. Так чего же ее тянуть до 1170? Скажите, можно как-то это предотвратить? Т.е. как не создавать изображений заведомо растянутых больше оригинала. Или только в шаблоне проверять ширину оригинала и оптимизированных изображений? И подставлять уже что подойдет. Но тогда тут возникает момент - надо еще одно изображение сделать: такое, как оригинал, но оптимизированное по уровню компрессии. Но все равно ведь сетка работает. Так что если даже не само изображение как таковое растянуто, так его отображение в браузере будет растянуто средствами CSS до нужной ширины колонки сетки. Так лучше я изображение сам программно растяну и сохраню - ресурсы на диске есть. Так что хочется как-то вот так: ResizeToFit(width=max(source_pic_width, 750) Был бы признателен за комментарий.

Решение задачи: «ResizeToFit в django-imagekit»

textual
Листинг программы
  1. ResizeToFit(width=1170, upscale=False)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут