使用 for 循环将 base64 字符串列表解码为 png 图像仅创建一个文件 (python3)

Decoding a list of base64 strings into png images using for loops is only creating one file (python3)

我有一大堆图片目前是用 base64 编码的。我试图一次解码它们并将输出打印到单个文件。

我正在尝试下面的代码,它不会导致错误,但它不会为列表中的每个字符串输出不同的图像,而是输出同一图像的多个文件。

import base64
from PIL import Image
from io import BytesIO

# images = ['List of base64 strings']

for i in range(len(images)):
      for b64_string in images:
          im = Image.open(BytesIO(base64.b64decode(b64_string)))
          im.save(f"{i}.png",'PNG')

我是 python/一般编程的新手,所以我可能对我正在尝试的东西很满意,但我很想知道我哪里出错了。提前致谢:)

在 python 中有一种更简单的方法来获取索引值,您可以使用 enumerate。它会给你元素和元素的索引,所以你可以迭代它并按照你的意愿去做。

for i, b64_string in enumerate(images):
    im = Image.open(BytesIO(base64.b64decode(b64_string)))
    im.save(f"{i}.png",'PNG')

Link 到文档:enumerate

文档中的示例:

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

删除内部循环,因为现在您要多次处理每个图像。

for i, image in enumerate(images):
      im = Image.open(BytesIO(base64.b64decode(image)))
      im.save(f"{i}.png",'PNG')