Python Imaging:从内存加载jpeg

Ale*_*ran 17 python jpeg image

问题是从内存加载jpeg编码的图像.

我从套接字收到一个字符串:

jpgdata = self.rfile.read(sz)
Run Code Online (Sandbox Code Playgroud)

我知道这是jpeg编码的图像.

我需要解码它.最愚蠢的解决方案是:

o = open("Output/1.jpg","wb")
o.write(jpgdata)
o.close()
dt = Image.open("Output/1.jpg")
Run Code Online (Sandbox Code Playgroud)

问题是如何在内存中做同样的事情?

jsb*_*eno 27

PIL的Image.open对象接受任何类似文件的对象.这意味着您可以将Image数据包装在StringIO对象上,并将其传递给Image.Open

from io import BytesIO
file_jpgdata = BytesIO(jpgdata)
dt = Image.open(file_jpgdata)
Run Code Online (Sandbox Code Playgroud)

或者,尝试将self.rfile参数作为参数传递给Image.open - 它也可以正常工作.(这适用于Python 2 - 用于Python 3 from cStringIO import StringIO as BytesIO)