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

时间:2015-03-07 00:47:32

标签: python file-io python-imaging-library pillow

问题

在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.

1 个答案:

答案 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。这似乎应该有效,但它不是出于某种原因。