Python pillow:从字节块列表中读取图像内容并保存到磁盘

Python pillow: read image content from a list of byte chunks and save to disk

我遇到一个场景,我需要使用 python pillow 从给定的字节块列表(例如,类型为 Iterator[bytes] 的迭代器)中读取图像,然后将其保存到一个位置。

我希望我能想出这样的方法:

def save_image(chunks: Iterator[bytes]):
    pil_image: Image = Image.open(chunks)  # Here is where I am getting blocked
    # ... some image operations
    pil_image.save(SOME_PATH, format=pil_image.format)

但我似乎没有找到任何文档或其他问题可以解决我的问题,让 python pillow 从字节块列表中读取图像。非常感谢任何帮助,谢谢!

您需要将块累积到 BytesIO 并将累积的缓冲区作为唯一参数传递给 Image.open()

相同的概念。

未经测试,但大概看起来像这样:

from io import BytesIO
from PIL import Image

buf = BytesIO()
for chunk in chunks:
   buf.write(chunk)

im = Image.open(buf)
  

如果您正在处理非常大或非常多的块,您可能希望在磁盘上而不是在内存中累积:

with open('image.bin', 'wb') as fd:
    for chunk in chunks:
       fd.write(chunk)

im = Image.open('image.bin')