PIL是否会调整到我给它的确切尺寸,无论如何?或者如果我给它类似Image.ANTIALIAS
参数的话,它会尝试保持宽高比吗?
答案 0 :(得分:22)
是的,它会使用缩略图方法保持宽高比:
image = Image.open(source_path)
image.thumbnail(size, Image.ANTIALIAS)
image.save(dest_path, "JPEG")
答案 1 :(得分:10)
How do I resize an image using PIL and maintain its aspect ratio?
来自PIL的Image.resize将完全按照说明完成。没有幕后宽高比的东西。
答案 2 :(得分:2)
是。这里需要的是thumbnail()方法......关于这个主题的这个或其他帖子中没有提到的一件事是'size'必须是列表或元组。因此,要调整大小为500像素的最大尺寸,您可以调用: image.thumbnail((500,500),Image.ANTIALIAS)
另见这篇文章的主题: How do I resize an image using PIL and maintain its aspect ratio?
答案 3 :(得分:0)
不,不是。但是您可以执行以下操作:
im = PIL.Image.open("email.jpg"))
width, height = im.size
im = im.resize((width//2, height//2))
高度和宽度除以相同的数字,保持相同的纵横比。
答案 4 :(得分:0)
好的,所以这需要几行代码才能得到你想要的。
首先找到比例,然后确定所需图像的尺寸(高度或宽度)。就我而言,我希望高度为 100 像素,然后相应地调整宽度,最后使用该比例找到新的高度或新的宽度。
所以首先找到尺寸:
width, height = logo_img.size
ratio = width / height
然后,修复其中一个维度:
new_height = 100
然后找到该高度的新宽度:
new_width = int(ratio * new_height)
logo_img = logo_img.resize((new_width, new_height))