簡體   English   中英

使用 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')

文檔鏈接:枚舉

文檔中的示例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM