Je suis en train de coder un programme qui, pour tous les fichiers d'un répertoire (les 101 fichiers sont déjà nommés 0.jpg à 100.jpg, dans l'ordre) ouvre les fichiers, les redimensionne en fonction d'un ratio, puis enregistre la sortie dans un répertoire différent en fonction de l'index de la boucle for avec enumerate. Je suis confus quant à savoir pourquoi mes index et noms de fichiers ne correspondent pas. L'index de la boucle for s'exécute de 0 à 100 et les noms de fichiers aussi. La boucle for doit appeler les fichiers d'image source dans un ordre séquentiel de 0 à 100 et les enregistrer dans l'ordre séquentiel en raison de l'index. Mais, quand j'ai exécuté le programme, ce qui était l'image source 100 (qui devrait être la plus grande image redimensionnée) est maintenant sauvegardé sous 3.jpg et est la quatrième plus petite image. Qu'est-ce que l'image 3 est maintenant l'image 24. Peut-être que plus de changements résultent de cela. Cependant, à des images plus grandes, la commande est correcte.PIL Images sauvegardées dans le mauvais ordre (pour la boucle, énumérer les index)
Voici mon code:
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
J'ai même fait en sorte de trier les fichiers. Les ratios et les index s'impriment tous correctement. Qu'est-ce qu'il se passe ici?
Que obtenez-vous si vous imprimez (fichiers) avant files.sort()? Et si vous imprimez (fichiers) après? – Hugo