我正在編寫一個程序,該目錄中的目錄中的所有文件(101個文件已按順序命名爲0.jpg到100.jpg)將打開文件,根據比例調整它們的大小,然後根據枚舉的for循環的索引將輸出保存到不同的目錄中。我很困惑,爲什麼我的索引和文件名不匹配。 for循環的索引從0到100,文件名也是如此。 for循環應該按照從0到100的順序調用源圖像文件,並且由於索引而按順序保存它們。PIL按錯誤順序保存的圖像(for循環,枚舉索引)
但是,當我運行程序時,源圖像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()之前打印(文件),你會得到什麼?如果你在它後面打印(文件)呢? – Hugo