Найти - Пользователи
Полная версия: Ресайз картинок с обрезкой пустого или белого фона
Начало » Django » Ресайз картинок с обрезкой пустого или белого фона
1 2
Andrew82
Коллеги, подскажите как лучше всего сделать задуманное:

Хочу сделать чтоб при загрузке фото обрезалось (если оно больше 300х400 px и ресайзилось на автомате обрезая белый фон если он есть)

исходное фото имеет разрешение 500х500 пикселей


фото которое должно получиться имеет разрешение 336х280 пикселей


Какая библиотека или модуль для Django лучше всего умеет это делать?
Вот нашел несколько не не могу выбрать лучшую:
django-imagekit
easy_thumbnails
django-image-cropping
django-image-cropper
django-imagehandler
django-avatar-crop

Может кто то сталкивался и сможет посоветовать наиболее подходящее решение под мою задачу?
Rebra4
django-imagekit может это все, только процес автоматической обрезки по белому фону нужно самому написать.
Остальное не проверял, но скорее всего easy_thumbnails тоже подойдет.
inoks
Храните оригинальные, resize можно делать в шаблонах, например через это https://github.com/mariocesar/sorl-thumbnail
Andrew82
Rebra4
django-imagekit может это все, только процес автоматической обрезки по белому фону нужно самому написать.Остальное не проверял, но скорее всего easy_thumbnails тоже подойдет.

а в плане безопасности, производительности? что быстрее, надежнее и менее ресурсозатратно режет фотки django-imagekit или easy_thumbnails?
FishHook
что быстрее, надежнее и менее ресурсозатратно режет

django-imagekit
easy_thumbnails
django-image-cropping
django-image-cropper
django-imagehandler
django-avatar-crop

Всё это обертки над PIL/PILLOW. Все эти батарейки работают приметно одинаково.
ИМХО, лучше взять PIL и сделать самому. Я не призываю изобретать велосипед, просто сам бы в вашем случае сделал бы по своему.
Andrew82
Спасибо! буду разбираться с PIL.
Подскажите еще: к какому сигналу Django привязать обработку фото только при первоначальном сохранении статьи, дабы по pre_save он повторно не резал фотку?
FishHook
Зачем тут сигнал?

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['name', ....]
    def save(self, commit=True):
        if self.instance.id is None:
           ..... делаем тамбнейл картинки
       return super(PostForm, self).save(commit=commit)
Andrew82
это код для формы я правильно понял?
мне же надо обрезать фотки при ручном добавлении статей в админку, можно это реализовать без сигналов?
FishHook
А кто не дает ModelAdmin сделать основании этой формы?
Да и у модели save можно переопределить похожим образом.
inoks
а потом вам понядобятся фотки в другом размере и опять будете ресайзить по всей базе?

Используйте sorl-thumbnail он вам динамически все отресазит под нужные размеры в шаблоне и в кэш сложит, откуда будет следующий раз грузить.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB