在Python中从原始二进制信息创建文件对象的简洁方法是什么?
我需要这样做的原因是因为我有原始二进制信息,包括存储在ram中的jpeg图像。我需要将它放在某种文件对象中,以便我可以使用Python的Pillow库调整图像大小。
根据pillow documentation,文件对象需要实现read()
,seek()
和tell()
方法。
The file object must implement read(), seek(), and tell() methods, and be opened in binary mode.
答案 0 :(得分:0)
我能够在PIL.Image.frombytes
的文档中找到如何处理这种情况的提示:
...If you have an entire image in a string, wrap it in a BytesIO object, and use open() to load it.
这是我最终使用BytesIO
:
import io
import PIL
from PIL.Image import Image
file_body = <binary image data>
t_file = io.BytesIO(file_body)
img = PIL.Image.open(t_file)
注意:评论中提到tempfile.SpooledTemporaryFile
。这似乎应该有效,但它不是出于某种原因。