首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动调整枕头图片大小

自动调整枕头图片大小
EN

Stack Overflow用户
提问于 2015-08-07 14:00:40
回答 1查看 57关注 0票数 2

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

代码语言:javascript
运行
复制
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!")

事情是,它没有正确循环。它不是将图像固定在白色背景上,而是将先前的图像抛到下一个背景上。希望这有点道理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 14:02:37

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

代码语言:javascript
运行
复制
for (dirname, dirs, files) in os.walk(dirPath):
    for filename in files:
        im_new = Image.new('RGB', (124,90), 'white')
        #...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31879587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档