Я пытаюсь создать и сохранить уменьшенное изображение при сохранении исходного изображения пользователя в модели userProfile
в моем проекте, ниже мой код:
def save(self, *args, **kwargs):
super(UserProfile, self).save(*args, **kwargs)
THUMB_SIZE = 45, 45
image = Image.open(join(MEDIA_ROOT, self.headshot.name))
fn, ext = os.path.splitext(self.headshot.name)
image.thumbnail(THUMB_SIZE, Image.ANTIALIAS)
thumb_fn = fn + '-thumb' + ext
tf = NamedTemporaryFile()
image.save(tf.name, 'JPEG')
self.headshot_thumb.save(thumb_fn, File(open(tf.name)), save=False)
tf.close()
super(UserProfile, self).save(*args, **kwargs)
Все работает нормально, только эта вещь.
Проблема в том, что функция миниатюр устанавливает только ширину 45
и не меняет аспект изображения, поэтому я получаю изображение 45*35
для того, на котором я тестирую (короткое изображение ).
Может кто-нибудь сказать мне, что я делаю не так? Как заставить соотношение сторон, которое я хочу?
P.S .: Я перепробовал все методы для размера: tupal: THUMB_SIZE = (45, 45)
и ввод размеров непосредственно в функцию миниатюр.
Еще один вопрос: в чем разница между функциями изменения размера и миниатюры в PIL? Когда использовать изменение размера, а когда использовать миниатюру?