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')
我遇到一个场景,我需要使用 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')