使用 imageio 制作 gif 时的图像顺序

images order while making gif using imageio

我正在通过 imageio 模块使用生成的 .png 文件制作 gif。尽管 .png 文件已排序并按数字顺序排列,但生成的 .gif 动画并不遵循此顺序。是什么原因? 到目前为止,这是我的代码:

png_dir='png'
images=[]
for file_name in os.listdir(png_dir):
    if file_name.endswith('.png'):
        file_path = os.path.join(png_dir, file_name)
        images.append(imageio.imread(file_path))
imageio.mimsave('movie.gif', images, duration=1)

.png 文件就像 file_01.png, file_02.png ... file_099.png

为什么生成的 gif 与 .png 文件的顺序不同?

在此先感谢您的帮助!

假设文件是有序的,但是os.listdir状态的docs(强调我的):

os.listdir(path='.')

Return a list containing the names of the entries in the directory given by path. The list is in arbitrary order, and does not include the special entries '.' and '..' even if they are present in the directory.

您可以自己对返回的列表进行排序:

for file_name in sorted(os.listdir(png_dir)):

注意:Python没有内置的自然排序。如果这就是你要找的东西,你应该检查这个问题的答案:Does Python have a built in function for string natural sort?