У меня есть странная проблема с PIL, не изменяя размер изображения.
def handle_uploaded_image(i, u):
# resize image
from PIL import Image
img = Image.open(i)
if img.mode not in ('L', 'RGB'):
img = img.convert('RGB')
width, height = img.size
if width == height:
img.thumbnail(settings.THUMB_SIZE, Image.ANTIALIAS)
elif width > height:
ratio = floor(width / height)
newwidth = ratio * 150
newwidthhalf = floor(newwidth / 2)
img.resize((newwidth, 150), Image.ANTIALIAS)
box = 1
img.crop((newwidthhalf, 0, 150, 150))
elif height > width:
ratio = floor(height / width)
newheight = ratio * 150
newheighthalf = floor(newheight / 2)
img.resize((150, newheight), image.ANTIALIAS)
box = 1
img.crop((0, newheighthalf, 150, 150))
path = '/'.join([settings.MEDIA_ROOT, 'users', u.username, 'mugshotv2.jpg'])
img.save(path, format='JPEG')
Этот код работает без ошибок и дает мне изображение с именем mugshotv2.jpg в правильной папке, но оно не изменяет его размер. Он что-то делает, потому что размер изображения падает от 120 кб до 20 кб, но размеры остаются неизменными.
Возможно, вы также можете предложить способ обрезать изображения на квадраты с меньшим количеством кода. Я подумал, что Image.thumbnail делает это, но то, что он сделал, это то, что он масштабировал мое изображение до 150 пикселей по ширине, оставив высоту 100 пикселей.
Алан.