2017-02-28 122 views
1

也許這是因爲我是Python的新手。但我似乎無法調整大小和保存圖像。如何在Python中保存調整大小的圖像?

有人能告訴我我在做什麼錯嗎?我先調整大小,然後將圖像裁剪爲256x256。輸出保存爲原始圖像。函數調用,如:resizeAndCrop("path/to/image.png")

當前行爲腳本保存圖像的原始尺寸...

# function for resizing and cropping to 256x256 
def resizeAndCrop(imgPath): 

    im = Image.open(imgPath) 

    # remove original 
    os.remove(imgPath) 

    # Get size 
    x, y = im.size 

    # New sizes 
    yNew = 256 
    xNew = yNew # should be equal 

    # First, set right size 
    if x > y: 
     # Y is smallest, figure out relation to 256 
     xNew = round(x * 256/y) 
    else: 
     yNew = round(y * 256/x) 

    # resize 
    im.resize((int(xNew), int(yNew)), PIL.Image.ANTIALIAS) 

    # crop 
    im.crop(((int(xNew) - 256)/2, (int(yNew) - 256)/2, (int(xNew) + 256)/2, (int(yNew) + 256)/2)) 

    # save 
    print("SAVE", imgPath) 
    im.save(imgPath) 
+1

'resize()'返回一個圖像的大小*副本*,所以你需要分配操作的結果,否則新圖像丟失。 'crop()'也是如此,增加的皺紋是「這是一個懶惰的操作。對源圖像的改變可能會或可能不會反映在裁剪後的圖像中。要獲得單獨的副本,請調用'load'方法在裁剪的副本上。「 –

+0

因此,您正在對圖像執行裁剪並調整大小,但是沒有任何事情發生,並且與原始圖像相同的圖像正在保存? – The4thIceman

+1

在:'newImage = im.resize((int(xNew),.......'? –

回答

1

按照文檔:https://pillow.readthedocs.io/en/4.0.x/reference/Image.html

調用調整圖像大小的「返回調整這張圖片的副本。「所以,你需要的結果分配給一個新的變量:

resizedImage = im.resize((int(xNew), int(yNew)), PIL.Image.ANTIALIAS) 

和裁剪同樣適用,但它在文檔那個指出「去枕3.4.0之前,這是一個懶散的操作。」所以現在你需要將調用分配給其他變量

相關問題