有一个基本上有效的代码:
from PIL import Image, ImageOps, ImageDraw
im = Image.open('image.png')
size = (200, 200) # размер итогового портрета
# маска
mask = Image.new('L', size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + size, fill=255)
im = im.resize(size)
output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)
output.thumbnail(size, Image.ANTIALIAS)
output.save('image_output.png')
如您所见,获得了一个圆形图像,但比例失真了。如何根据原始图像获得圆形肖像,但比例正常?

我的意思是这样的:
结果(原来的,用
.thumbnail代替crop的):