Pillow中自动调整图片大小

时间:2015-08-07 14:00:40

标签: python image image-processing python-imaging-library pillow

我希望给定目录中的所有图片都具有相同的大小。这就是我所拥有的:

import PIL
import os
import math

from PIL import Image

dirPath = r"C:\\a"
dirList = os.listdir(dirPath)
outPath = r"C:\\b"

im_new = Image.new('RGB', (124,90), 'white')
new_w = 124
new_h = 90

for (dirname, dirs, files) in os.walk(dirPath):
    for filename in files:
        print("Opening:"+filename)
        thefile = os.path.join(dirname,filename)
        im = Image.open(thefile)

        old_w, old_h = im.size

        x1 = int(math.floor((new_w - old_w) / 2))
        y1 = int(math.floor((new_h - old_h) / 2))

        im_new.paste(im, (x1, y1, x1 + old_w, y1 + old_h))

        print("Saving:"+filename)
        outfile = os.path.join(outPath,filename)
        im_new.save(outfile, "PNG")


print("Done!")

事情是,它没有正确循环。它不是将图像固定在白色背景上,而是将下一个图像抛出。希望有点意义。

1 个答案:

答案 0 :(得分:1)

im_new是在循环外创建的,所以你只有一个。在循环的一次迭代中对它进行的更改在以后的迭代中是可见的。尝试在循环中创建它。

for (dirname, dirs, files) in os.walk(dirPath):
    for filename in files:
        im_new = Image.new('RGB', (124,90), 'white')
        #...