[Python] 如何使用PIL調整圖像大小並保持其寬高比?


Answers

該腳本將使用PIL(Python Imaging Library)將圖像(somepic.jpg)調整為300像素的寬度和與新寬度成比例的高度。 它通過確定300像素是原始寬度(img.size [0])的百分比,然後將原始高度(img.size [1])乘以該百分比來實現。 將“基礎寬度”更改為任何其他數字以更改圖像的默認寬度。

from PIL import Image

basewidth = 300
img = Image.open('somepic.jpg')
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
img.save('sompic.jpg') 
Question

有沒有一種明顯的方法可以做到這一點,我錯過了? 我只是想製作縮略圖。




基於@tomvon,我完成了以下操作:

調整寬度大小:

new_width  = 680
new_height = new_width * height / width 

調整高度:

new_height = 680
new_width  = new_height * width / height

然後只是:

img = img.resize((new_width, new_height), Image.ANTIALIAS)



如果您嘗試保持相同的寬高比,那麼您是否不會按原始大小的某個百分比重新調整大小?

例如,原始大小的一半

half = 0.5
out = im.resize( [int(half * s) for s in im.size] )



from PIL import Image
from resizeimage import resizeimage

def resize_file(in_file, out_file, size):
    with open(in_file) as fd:
        image = resizeimage.resize_thumbnail(Image.open(fd), size)
    image.save(out_file)
    image.close()

resize_file('foo.tif', 'foo_small.jpg', (256, 256))

我使用這個庫:

pip install python-resize-image



Links