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

4

问题

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

更多信息

我需要这样做的原因是因为我有存储在内存中的包含JPEG图像的原始二进制信息。我需要将它放入某种文件对象中,以便可以使用Python的Pillow库调整图像大小。

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

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

1
https://docs.python.org/2/library/stringio.html https://docs.python.org/3/library/io.html#binary-i-o其他人或您自己可以通过详细回答来获得声望,但这些应该是您需要的。干杯。 - Jeremy
1
我怀疑tempfile可以帮到你——也许是tempfile.SpooledTemporaryFile - jedwards
1个回答

1

我在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。看起来这应该可以工作,但出于某些原因它没有工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接