【发布时间】:2017-09-25 00:42:45
【问题描述】:
我正在编写一个程序,对于目录中的所有文件(101 个文件已经按顺序命名为 0.jpg 到 100.jpg)打开文件,根据比例调整它们的大小,然后保存根据带有枚举的for循环的索引在不同的目录中输出。我对为什么我的索引和文件名不匹配感到困惑。 for 循环的索引从 0 到 100,文件名也是如此。 for 循环应该按从 0 到 100 的顺序调用源图像文件,并因为索引而按顺序保存它们。
但是,当我运行程序时,源图像 100(应该是最大的调整大小的图像)现在保存为 3.jpg 并且是第四小的图像。以前的图像 3 现在是图像 24。也许更多的变化会由此产生。但是,在较大的图像中,顺序是正确的。
这是我的代码:
os.makedirs("resized images")
try:
files = os.listdir(os.path.join(os.getcwd(),"source images"))
except IOError:
print('No folder found.')
input('Enter any key to exit: ')
exit()
xDimension=dimensions[0]
yDimension=dimensions[1]
print(xDimension)
print(yDimension)
totalViews=0
for item in d:
totalViews+=d[item]
files.sort()
for index, file in enumerate(files):
path = os.path.join(os.getcwd(), "source images", file)
img = Image.open(path)
ratio=(d[index]/totalViews)
print(ratio)
print(str(index))
resizedX=int(math.ceil((xDimension*ratio)))
resizedY=int(math.ceil((yDimension*ratio)))
resized=img.resize((resizedX, resizedY))
resized.save("resized images/"+str(index)+".jpg", 'JPEG')
#image 100 in source images becomes image 3 in resized images, making image 3 become image 24
我什至确保对文件进行排序。比率和索引都正确打印。这里发生了什么?
【问题讨论】:
-
如果在 files.sort() 之前 print(files) 会得到什么?如果你在它之后打印(文件)呢?
标签: python for-loop io save python-imaging-library