从Python中的原始二进制信息创建一个文件对象



问题

在Python中,从原始二进制信息创建文件对象的干净方法是什么?

更多信息

我需要这样做的原因是,我有原始二进制信息,包括存储在ram中的jpeg图像。我需要把它放在某种文件对象中,这样我就可以使用Python的Pillow库调整图像的大小。

根据pillow文档,文件对象需要实现read()seek()tell()方法。

file对象必须实现read()、seek()和tell()方法,并以二进制模式打开。

我在PIL.Image.frombytes:的文档中提到了如何处理这种情况

…如果你在一个字符串中有一个完整的图像,请将其包装在BytesIO对象中,并使用open()加载它。

这就是我最终使用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。这似乎应该奏效,但由于某种原因没有奏效。

最新更新