Python 成像:从内存加载 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")
问题是如何在内存中做同样的事情?
The problem is to load jpeg-encoded image from memory.
I receive a string from socket:
jpgdata = self.rfile.read(sz)
and I know that this is jpeg-encoded image.
I need to decode it.
The most stupid solution is:
o = open("Output/1.jpg","wb")
o.write(jpgdata)
o.close()
dt = Image.open("Output/1.jpg")
The question is how to do the same thing in-memory?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
PIL 的 Image.open 对象接受任何类似文件的对象。这意味着您可以将 Image 数据包装在 StringIO 对象上,并将其传递给 Image.Open
或者,尝试将 self.rfile 作为参数传递给 Image.open - 它可能也同样有效。 (对于 Python 3 - 对于 Python 2 使用
from cStringIO import StringIO as BytesIO
)PIL's Image.open object accepts any file-like object. That means you can wrap your Image data on a StringIO object, and pass it to Image.Open
Or, try just passing
self.rfile
as an argument to Image.open - it might work just as well. (That is for Python 3 - for Python 2 usefrom cStringIO import StringIO as BytesIO
)使用 StringIO,以便 Image 可以像访问文件一样访问您的数据。
Use StringIO so Image can access your data as if it were a file.