Python图像处理:从内存加载jpeg

24 投票
2 回答
25445 浏览
提问于 2025-04-17 10:00

这个问题是要从内存中加载一个jpeg格式的图片。

我从网络连接中收到了一个字符串:

jpgdata = self.rfile.read(sz)

我知道这个字符串是jpeg格式的图片。

我需要把它解码。

最简单的解决办法是:

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

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

2 个回答

0

使用StringIO,这样Image就可以像访问文件一样访问你的数据。

39

PIL的Image.open对象可以接受任何像文件一样的对象。这意味着你可以把你的图像数据放在一个StringIO对象里,然后传递给Image.open。

from io import BytesIO
file_jpgdata = BytesIO(jpgdata)
dt = Image.open(file_jpgdata)

或者,你也可以试着直接把self.rfile作为参数传给Image.open,这样也可能能正常工作。(这个是针对Python 3的,如果你用的是Python 2,就用from cStringIO import StringIO as BytesIO

撰写回答