Python图像:从内存加载jpeg

Python图像:从内存加载jpeg,python,image,jpeg,Python,Image,Jpeg,问题是从内存中加载jpeg编码的图像 我从套接字接收到一个字符串: jpgdata = self.rfile.read(sz) 我知道这是jpeg编码的图像 我需要解码它。 最愚蠢的解决方案是: o = open("Output/1.jpg","wb") o.write(jpgdata) o.close() dt = Image.open("Output/1.jpg") 问题是如何在内存中执行相同的操作?使用StringIO,以便Image可以像访问文件一样访问数据。PIL的Image.op

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

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

jpgdata = self.rfile.read(sz)
我知道这是jpeg编码的图像

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

o = open("Output/1.jpg","wb")
o.write(jpgdata)
o.close()
dt = Image.open("Output/1.jpg")

问题是如何在内存中执行相同的操作?

使用StringIO,以便Image可以像访问文件一样访问数据。

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

from io import BytesIO
file_jpgdata = BytesIO(jpgdata)
dt = Image.open(file_jpgdata)
或者,尝试将
self.rfile
作为参数传递给Image.open,也可以这样做。(对于Python3,使用cStringIO中的
导入StringIO作为BytesIO