问题
在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
。这似乎应该奏效,但由于某种原因没有奏效。