首页 > 解决方案 > 使用 for 循环将 base64 字符串列表解码为 png 图像仅创建一个文件(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 / 编程的新手,所以我可能对我正在尝试的东西很满意,但我很想知道我哪里出错了。提前致谢 :)

标签: pythonfor-loopimage-processingbase64

解决方案


有一种更简单的方法可以在 python 中获取索引值,您可以使用enumerate. 它将为您提供元素和元素的索引,因此您可以迭代它并按照您的意愿进行操作。

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

文档链接:枚举

文档中的示例:

>>> 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')]

推荐阅读