使用 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')
我有一大堆图片目前是用 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')