Tôi có một số vấn đề lạ với PIL không thay đổi kích thước hình ảnh.PIL Image.resize() không thay đổi kích thước hình ảnh
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')
Mã này chạy mà không có bất kỳ lỗi nào và tạo hình ảnh có tên mugshotv2.jpg trong thư mục chính xác nhưng không đổi kích thước. Nó làm một cái gì đó với nó, bởi vì kích thước của hình ảnh giảm từ 120 kb đến 20 kb, nhưng kích thước vẫn giữ nguyên.
Có lẽ bạn cũng có thể đề xuất cách cắt hình ảnh thành hình vuông có ít mã hơn. Tôi nghĩ rằng Image.thumbnail làm điều đó, nhưng những gì nó đã làm là nó thu nhỏ hình ảnh của tôi đến 150 px theo chiều rộng của nó, để lại chiều cao 100px.
Alan.
Cảm ơn! Điều đó là vậy đó. Đây là một lần nữa sai lầm của loại ngu ngốc, dễ dàng này, mà tôi thường làm: P. Nhìn vào nó một lần nữa tôi không thể hiểu làm thế nào tôi đã không hiểu nó bản thân mình - đó là trong tài liệu chết tiệt sau khi tất cả. Tôi nghĩ tôi cần phải đi ngủ. Cảm ơn một lần nữa và bệnh thử rằng ImageOps.fit một số ngày khác: D –
@Zayatzz, vì vậy chấp nhận câu trả lời của @ Nadia, đã, kể từ khi nó giải quyết vấn đề của bạn _and_ thậm chí cung cấp lời khuyên về cách tiếp cận tốt hơn! –
Ah .. đó là dấu kiểm lạ .... ohwell. nó có thể sử dụng một cái gì đó để thu hút thêm sự chú ý đến nó. –